mysqlにおける日付比較サイズ方法の詳細

6797 ワード

mysqlでの日付比較サイズ
テーブルproductにフィールドadd_がある場合time、データ型はdatetimeで、sqlと書く人がいるかもしれません.
select * from product where add_time = '2013-01-12'

この文については、yyyy-MM-ddという形式で保存されている場合はOKです.もしあなたが記憶しているフォーマットが:yyyy-MM-dd HH:mm:ssというフォーマットであれば悲劇的です.この場合、DATE()関数を使用して日付の部分を返すことができます.そのため、このsqlは次のように処理する必要があります.
select * from product where Date(add_time) = '2013-01-12'

もう一つ、2013年1月に加入した製品を調べるなら?
select * from product where date(add_time) between '2013-01-01' and '2013-01-31'
--       :
select * from product where Year(add_time) = 2013 and Month(add_time) = 1

これでmysql日付関数が日付比較問題を処理するのに役立つことを知っていますよね?
DAYOFWEEK(date)は、日付dateの曜日インデックス(1=日曜日、2=月曜日、・・・7=土曜日)を返します.これらのインデックス値はODBC規格に対応する.
mysql> select DAYOFWEEK('2019-03-26'); 
-> 3

WEEKDAY(date)は、dateの曜日インデックス(0=月曜日、1=火曜日、・・・6=日曜日)を返します.
mysql> select WEEKDAY('2019-03-26 22:23:00'); 
-> 1
mysql> select WEEKDAY('2019-03-25'); 
-> 0

DAYOFMONTH(date)は、dateの月中日付を1~31の範囲で返します.
mysql> select DAYOFMONTH('1998-02-03'); 
-> 3

DAYOFYEAR(date)は、1年の日数を1~366の範囲で返します.
mysql> select DAYOFYEAR('2019-02-03'); 
-> 34

MONTH(date)は、1~12の範囲でdateの月を返します.
mysql> select MONTH('2019-02-03'); 
-> 2

DAYNAME(date)は、dateの曜日名を返します.
mysql> select DAYNAME("2019-03-26"); 
-> 'Thursday'

MONTHNAME(date)は、dateの月の名前を返します.
mysql> select MONTHNAME("2019-03-26"); 
-> 'March'

QUARTER(date)は、dateの1年間の四半期を1~4の範囲で返します.
mysql> select QUARTER('2019-03-26'); 
-> 1

TO_DAYS(date)は0からの日数を返します
-- date_col     30   :
SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

リファレンス