プログラマが把握するSQL時間関数(5)

28666 ワード

文書ディレクトリ
  • 前言
  • 1. 現在の日付を取得する関数および現在の時刻を取得する関数
  • 2. 取得現在の日付時間
  • 3. UNIX時間変換
  • 4. 月関数
  • 5. 日数関数
  • 6. 年、月、週、日、時、分、秒関数
  • 7. 計算日時関数
  • 8時間フォーマット
  • 前言
    日付と時刻関数は、日付と時刻関数を処理するために使用されます.一般的に開発では、現在の時刻までの受注数の合計など、さまざまな日付と時刻関数について詳しく説明します.MySQLでよく使用される日付と時刻関数をリストします.
    1.現在の日付を取得する関数と、現在の時刻を取得する関数
    取得現在の日付はCURRENT_DATE()またはCURDATE()は、両方の役割が同じであり、いずれも現在の日付を取得し、出力は「YYYY-MM-DD」形式で出力される
    mysql> select CURRENT_DATE(),CURDATE();
    +----------------+------------+
    | CURRENT_DATE() | CURDATE()  |
    +----------------+------------+
    | 2020-06-24     | 2020-06-24 |
    +----------------+------------+
    1 row in set (0.00 sec)
    

    現在時刻を取得するにはCURRENT_を使用します.TIMEとCURTIME()は,両者の役割も同様であり,出力時間のフォーマットは‘HH:MM:SS’に従う.
    mysql> select CURRENT_TIME(),CURTIME();
    +----------------+-----------+
    | CURRENT_TIME() | CURTIME() |
    +----------------+-----------+
    | 13:48:47       | 13:48:47  |
    +----------------+-----------+
    1 row in set (0.00 sec)
    

    2.現在の日付時刻の取得
    開発では、現在の時間を取得して数値を挿入する必要があることがよくあります.たとえば、注文を生成するときに注文時間を保存する必要がある場合、CURRRENT_TIMESTAMP()、NOW()、LOCALTIME()、SYSTATE()のいずれも現在の日付を取得でき、4つの関数の役割は同じです.
    mysql> select NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE();
    +---------------------+---------------------+---------------------+---------------------+
    | NOW()               | CURRENT_TIMESTAMP() | LOCALTIME()         | SYSDATE()           |
    +---------------------+---------------------+---------------------+---------------------+
    | 2020-06-25 00:11:09 | 2020-06-25 00:11:09 | 2020-06-25 00:11:09 | 2020-06-25 00:11:09 |
    +---------------------+---------------------+---------------------+---------------------+
    1 row in set (0.00 sec)
    

    3.UNIX時間変換
    UNIX_TIMESTAMP(date)関数:日付dateのunixタイムスタンプを返し、FROM_UNIXTIME(unixtime)は、逆にunixタイムスタンプをdateタイプに変更する
    mysql> select UNIX_TIMESTAMP(NOW());
    +-----------------------+
    | UNIX_TIMESTAMP(NOW()) |
    +-----------------------+
    |            1593015381 |
    +-----------------------+
    1 row in set (0.00 sec)
    
    
    mysql> SELECT FROM_UNIXTIME(1593015381);
    +---------------------------+
    | FROM_UNIXTIME(1593015381) |
    +---------------------------+
    | 2020-06-25 00:16:21       |
    +---------------------------+
    1 row in set (0.00 sec)
    

    4.月関数
    MONTH(date)はdateが存在する月を返し、返された値は1-12からMONTHNAME(date)はdateに対応する月の英語名を返す
    mysql> SELECT MONTH(NOW()),MONTHNAME(NOW());
    +--------------+------------------+
    | MONTH(NOW()) | MONTHNAME(NOW()) |
    +--------------+------------------+
    |            6 | June             |
    +--------------+------------------+
    1 row in set (0.00 sec)
    

    5.日数関数
    DAYNAME(date)はdateに対応する平日名を返し、DAYOFWEEK(date)は指定した日付の週インデックスを返し、インデックスは0から6まで
    mysql> select DAYNAME(NOW()),DAYOFWEEK(NOW());
    +----------------+------------------+
    | DAYNAME(NOW()) | DAYOFWEEK(NOW()) |
    +----------------+------------------+
    | Thursday       |                5 |
    +----------------+------------------+
    1 row in set (0.00 sec)
    

    DAYOFYEAR(date)が戻ってきたのは1年の何日目、範囲は1-366、DAYOFMONTH(date)が戻ってきたのは月の何日目
    mysql> SELECT DAYOFMONTH(NOW()),DAYOFYEAR(NOW());
    +-------------------+------------------+
    | DAYOFMONTH(NOW()) | DAYOFYEAR(NOW()) |
    +-------------------+------------------+
    |                25 |              177 |
    +-------------------+------------------+
    1 row in set (0.00 sec)
    

    6.年、月、週、日、時、分、秒関数
    mysql> select YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
    +-------------+--------------+------------+-------------+---------------+---------------+
    | YEAR(NOW()) | MONTH(NOW()) | DAY(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
    +-------------+--------------+------------+-------------+---------------+---------------+
    |        2020 |            6 |         25 |           0 |            42 |            55 |
    +-------------+--------------+------------+-------------+---------------+---------------+
    1 row in set (0.00 sec)
    

    7.計算日時関数
    3時間前に生成された注文数を問い合わせるなど、開発中に計算する時間の必要性がよくあります.一般的な使用関数はDATE_です.ADD()、DATE_SUB()、DATE_DIFF()は、どちらも計算時間間DATE_ADD()は加算を実行し、DATE_SUB()は減算を行います.そしてDATE_DIFF()は、間隔の日数を計算します.
    mysql> SELECT DATE_ADD(NOW(), INTERVAL -3 HOUR),DATE_SUB(NOW(),INTERVAL 3 HOUR);
    +-----------------------------------+---------------------------------+
    | DATE_ADD(NOW(), INTERVAL -3 HOUR) | DATE_SUB(NOW(),INTERVAL 3 HOUR) |
    +-----------------------------------+---------------------------------+
    | 2020-06-24 21:58:52               | 2020-06-24 21:58:52             |
    +-----------------------------------+---------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT DATEDIFF(now(),'2020-06-20');
    +------------------------------+
    | DATEDIFF(now(),'2020-06-20') |
    +------------------------------+
    |                            5 |
    +------------------------------+
    1 row in set (0.00 sec)
    

    上記時間計算はHOUR単位で計算したものであり、それ以外にYEAR、MONTH、DAY、HOUR、MINUTE、SECOND等を用いることができる.
    8時間フォーマット
    開発で最も一般的なフォーマット関数はDATE_です.FORMAT(date,pattern).例えば、時間を私たちが日常的に見ている関数のフォーマットにフォーマットします.
    mysql> select date_format(now(),'%Y-%m-%d %H:%i:%s');
    +----------------------------------------+
    | date_format(now(),'%Y-%m-%d %H:%i:%s') |
    +----------------------------------------+
    | 2020-06-25 01:19:42                    |
    +----------------------------------------+
    1 row in set (0.00 sec)
    

    より多くの正規部分のルールについては、このWebサイトを参照してください.https://www.w3school.com.cn/sql/func_date_format.asp