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の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位まで正確です。