web-dev-qa-db-ja.com

MySQLで日付を比較する

指定された2つの日付の間のデータベースの日付を比較したい。データベースの列はDATETIMEであり、日時形式ではなく、日付形式のみと比較したいと思います。

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'

上記のSQLを実行すると、このエラーが発生します。

SQL構文にエラーがあります。使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください 'us_reg_date、120)> =' 2000-07-05 'AND CONVERT(CHAR(10)、us_reg_date、120)<=' 2011- 'atライン1

この問題はどのように修正できますか?

76
NVG

以下のクエリを試すことができます、

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)
75
Nik

つまり、日付を文字列に変換するための SQL Server構文 です。 MySQLでは、 DATE 関数を使用して、日時から日付を抽出できます。

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

ただし、列us_reg_dateのインデックスを利用したい場合は、代わりにこれを試してください。

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day
82
Mark Byers

これは私のために働く:

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

フォーマット文字列 '%Y-%m-%d'および入力日付のフォーマットに注意してください。

8
Rahatur

やあみんな私は答えを得たあなたの助けに感謝します。

ここにコードがあります......

SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
6
Gurjeet Singh

これは私のために働いたものです:

select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
 AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

ロードに時間がかかるため、以前のソリューションからSTR_TO_DATE(column、 '%d /%m /%Y')を変更する必要があったことに注意してください

0