情報源: MySQLのバックアップ/復元(ダンプ/インポート/dump/import) 基本コマンド – 酒と泪とRubyとRailsと
「mysql」カテゴリーアーカイブ
MySQLのTIMESTAMPDIFF()関数について
TIMESTAMPDIFF()関数の第一引数にHOURやMINUTEを指定する際に注意するべき点は、第二、三引数で指定された時間が切り下げられること。
例えば、時差が一時間未満なら結果は0になる
SELECT TIMESTAMPDIFF(HOUR, '2013-01-01 01:00:00', '2013-01-01 01:59:00')
時差が一時間以上、二時間未満なら結果は1になる
SELECT TIMESTAMPDIFF(HOUR, '2013-01-01 01:00:00', '2013-01-01 01:59:00')
特殊文字のエスケープについて
MySQLにデータを挿入する際、SQLインジェクション対策に、特殊文字をエスケープする関数「mysqli::real_escape_string」を使う。
by http://www.php.net/manual/ja/mysqli.real-escape-string.php
特殊文字をHTMLで表示する際はhtmlspecialchars関数を使う
by http://php.net/manual/ja/function.htmlspecialchars.php
MySQLのDECIMAL関数について
DECIMAL(M,D)において
Mは整数と小数点を含む全ての桁数
Dは小数点だけの桁数
なのでMはDより大きくなければならない
「整数部分の桁数 = M – D」となる
MySQLのCAST関数で取り扱える型について
http://dev.mysql.com/doc/refman/5.1-olh/ja/cast-functions.html#function_convert
cast関数でfloatには変換出来ないので、その代わりにDECIMAL関数を使う
MySQLのLONG型は数値ではなく文字
javaのLONG型は数値だがMySQLでは文字である事に気づいた。
今までは間違ってLONG型を数値と思い込み、order by でソートした時に挙動がおかしかったはずだ。
何故か自分の過去のソースコードを見てみるとLPAD関数に文字数値を数値にわざわざキャストして、ソートしていたw
この時点でおかしいのは気づくべきなのに
long型は正確にはmidiumtext型となる
mysqlの数値タイプについて
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html
float型について
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
M は桁数の合計で、D は小数点以下の桁数の合計です。もし M と D が削除された場合、値はハードウェアに許容された限界まで格納されます。単精度小数点数は大体小数第7位まで正確です。
MySQLの浮動小数点以下が数桁しか取得できない問題
MySQLの日付時刻関数について
- UNIX_TIMESTAMP関数
http://dev.mysql.com/doc/refman/5.1-olh/ja/date-and-time-functions.html#function_unix-timestamp - NOW関数
http://dev.mysql.com/doc/refman/5.1-olh/ja/date-and-time-functions.html#function_now - TIMESTAMPDIFF関数
http://dev.mysql.com/doc/refman/5.1-olh/ja/date-and-time-functions.html#function_timestampdiff