ホームページ >バックエンド開発 >PHPチュートリアル >mysql の日付比較関連の問題
MySQL の日付比較の問題
テーブル kucun には datavalue (varchar、2012-01-01 の形式の日付) フィールドと Price (float 11,2) フィールドがあります
今、取得したいのは2012-07- 10 から 2012-08-10 までのデータを書き込む方法は次のとおりです:
1,
SELECT * FROM `kucun` where datavalue between 'UNIX_TIMESTAMP(2012-07-10) )' と 'UNIX_TIMESTAMP( 2012-08-10)'
結果は空です
2,
SELECT * FROM `kucun` WHERE datavalue BETWEEN '2012-07-10' AND '2012-08- 10'
結果は正しく、探していたデータが得られました。
3,
SELECT * FROM `kucun` where UNIX_TIMESTAMP(datavalue)>UNIX_TIMESTAMP(2012-07-10) and UNIX_TIMESTAMP(datavalue)
1 と 3 が空なのはなぜですか? 2 このように書くのは正式ですか? XXXX-XX-XX 形式の日付は比較できますか?
-----解決策---------
1.
SELECT * FROM `kucun` where datavalue between 'UNIX_TIMESTAMP(2012-07-10)' と 'UNIX_TIMESTAMP(2012-08-10)'
冗長な引用符を削除します
3.
SELECT * FROM `kucun` where UNIX_TIMESTAMP(datavalue)>UNIX_TIMESTAMP('2012-07-10') and UNIX_TIMESTAMP(datavalue)
追加予定 必須引用符
------解決策------------------
UNIX_TIMESTAMP() 関数の文字列パラメータは引用符で囲む必要があります。これを試してください:
SELECT * FROM `kucun` where UNIX_TIMESTAMP(datavalue)>UNIX_TIMESTAMP('2012-07-10') and UNIX_TIMESTAMP(datavalue)<div class="clear"></div>