1

このコードを書きましたが、適切な記録が得られません。

1.

SELECT first_name,date 
from user where date between  '01-05-2012' and '05-05-2012'

2.

SELECT first_name,date from user 
where date >= '01-05-2012' date <= '05-05-2012'

上記のコードの問題は何ですか? 書き込みクエリはどうなりますか?

サンプルデータはこちら

first_name  date
Sonu    23-01-2012
Saqib   20-02-2012
Sachin  01-04-2012
Ankit   17-08-2012
Michal  12-13-2011
4

4 に答える 4

4

最初に日付を変換しますSTR_TO_DATE

SELECT *
FROM table1
WHERE STR_TO_DATE(`date`,'%d-%m-%Y') 
      BETWEEN '2012-05-01' AND '2012-12-05'

June 01 2012これにより、開始日から終了日までの日付が選択されますDecember 05 2012

SQLFiddle デモ

自分のフォーマットに固執したい場合は、

SELECT *
FROM table1
WHERE STR_TO_DATE(`date`,'%d-%m-%Y') 
      BETWEEN STR_TO_DATE('01-05-2012','%d-%m-%Y') AND 
              STR_TO_DATE('05-12-2012','%d-%m-%Y')

SQLFiddle デモ

于 2012-10-05T10:39:35.587 に答える
1

日付は ISO 形式 (yyyy-mm-dd) で指定する必要があります。

SELECT first_name,date from user 
where date >= '2012-05-01' and date <= '2012-05-05'
于 2012-10-05T10:30:08.493 に答える
0

日付列のデータ型が日付のDATE_FORMAT(date,'%Y-%m-%d')場合それ以外を使用

STR_TO_DATE(DATE_FORMAT(date,'%Y-%m-%d'))
于 2012-10-05T10:33:58.770 に答える
0

日付/時刻形式がサポートされている形式と一致する場合、MySQL は暗黙的な変換を実行して値をDATETIME

文字列を明示的に DATETIME に変換する場合は、STR_TO_DATE 関数が最適です。

于 2012-10-05T10:30:31.923 に答える