MySQLの日付を比較する


92

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

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

回答:


94

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

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

37
googleから来ている人のために:mysqlの日付タイプはyyyy-mm-dd形式です。
BłażejMichalik

86

これは、日付を文字列に変換するための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

1
インデックスをご活用いただき、誠にありがとうございます。クエリには「+間隔1日」句を含めないでください。
Jurgenfd 16

10

これは私にとってはうまくいきます:

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

形式文字列 '%Y-%m-%d'と入力日付の形式に注意してください。


6

皆さん、助けてくれてありがとうございます。

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

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')

2

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

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(列、 '%d /%m /%Y')は、ロードに時間がかかるため、以前のソリューションから変更する必要があったことに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.