MySQL共通日付関数

1649 ワード

1つのsqlを例に、sqlが使用した日付をまとめます.
SELECT active_cap,reverse_active_cap,forward_reactive_cap,reverse_reactive_cap,
if(
    2019 < LEFT(NOW(),4),
    str_to_date(DATE_SUB(CONCAT(2019,'1231'),INTERVAL -1 DAY),'%Y-%m-%d %H:%i:%s'),
    str_to_date(DATE_SUB(CONCAT(collect_time,'00'),INTERVAL 0 DAY),'%Y-%m-%d %H:%i:%s')
) meter_time
from (
SELECT
    active_cap, reverse_active_cap, forward_reactive_cap, reverse_reactive_cap, s_Id, busi_code, collect_time from pms_meter_t
WHERE active_cap IS NOT NULL AND meter_type = 1 AND valid = 1
AND collect_time >= concat(2019,'01010000')
AND collect_time <  concat(replace(DATE_SUB(concat(2019,'1231'),INTERVAL -1 DAY),'-',''),'0000')
AND s_Id = 'NN1_1'
ORDER BY collect_time desc  
) meter GROUP BY meter.busi_code , meter.s_Id

NOW()は、現在時刻を取得する2019-02-01 15:36:12 STR_TO_DATE(str,format)関数は、時間フォーマットの文字列(str)を、提供される表示フォーマット(format)に従ってDATETIMEタイプの値に変換するものである.DATE_FORMAT(date,format)関数は、データベースの日付を対応する文字列フォーマットに変換します.format:よく使われる例:%Y-%m-%d%H:%i:%s,%Y-%m-%d DATE_ADD(date,INTERVAL expr type)はmysqlに内蔵された関数date_addとdate_subは指定した時間を増加または減少させることができ、構文は以下の通りである:DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)は、dateが指定された日付、INTERVALがキーワード、exprが具体的な時間間隔、typeが時間単位である.注意:typeはYEAR_のような複合型にすることができます.MONTH.typeが複合型でなければDATE_ADDとDATE_SUBは実際には通用します.exprは負の数になるからです.type:MICROSECOND,SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,YEAR
その他の一般的な例:
今月最終日取得:SELECT LAST_DAY(date)取得日の日/月/年:day(date)/month(date)/YEAR(date)取得今月初日:select date_add(curdate(), interval - day(curdate()) + 1 day)