logo

SQL の日付と時刻の関数

SQL 、データベースを操作する際、テーブル内のデータの形式を挿入する入力データと一致させる必要があるため、日付は初心者にとって複雑です。さまざまなシナリオで、日付の代わりに日時 (日付には時間も関係します) が使用されます。

日付または日付と時刻の値をデータベースに保存するには、 MySQL は次のデータ型を提供します。



日付 YYYY-MM-DD形式
日付時刻 形式: YYYY-MM-DD HH:MI:SS
タイムスタンプ 形式: YYYY-MM-DD HH:MI:SS
YYYY または YY の形式

ここで、SQL 日付関数の中でよく使われる関数をいくつか見てみましょう。

今()

現在の日付と時刻を返します。

char から int Java へ

クエリ:



SELECT NOW();>

出力:

now メソッドの出力イメージ

CURDATE()

現在の日付を返します。



クエリ:

SELECT CURDATE();>

出力:

出力2

時間()

現在の時刻を返します。

クエリ:

SELECT CURTIME();>

出力:

出力3

日付()

日付または日付/時刻式の日付部分を抽出します。例: 「Test」という名前の以下のテーブルの場合

aws赤方偏移
ID 名前 出生時間
4120 練習する 1996-09-26 16:44:15,581

クエリ:

SELECT Name, DATE(BirthTime)  AS BirthDate FROM Test;>

出力:

名前 生年月日
練習する 1996-09-26

抽出する()

日付/時刻の単一の部分を返します。

構文

ああ、ジャワ

EXTRACT(日付からの単位);

いくつかの単位が考慮されますが、使用されるのは次のような一部だけです。 マイクロ秒、秒、分、時、日、週、月、四半期、年など。 「date」は有効な日付表現です。例: 「Test」という名前の以下のテーブルの場合

ID 名前 出生時間
4120 練習する 1996-09-26 16:44:15,581

クエリ:

SELECT Name, Extract(DAY FROM  BirthTime) AS BirthDay FROM Test;>

出力:

名前 誕生日
練習する 26

クエリ:

SELECT Name, Extract(YEAR FROM BirthTime) AS BirthYear FROM Test;>

出力:

名前 生年
練習する 1996年

クエリ:

SELECT Name, Extract(SECOND FROM  BirthTime) AS BirthSecond FROM Test;>

出力:

名前 誕生二回目
練習する 581

DATE_ADD()

指定された時間間隔を日付に追加します。

構文:

DATE_ADD(日付, INTERVAL expr 型);

ここで、date – 有効な日付式、expr は追加する間隔の数です。タイプは次のいずれかになります: MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR など。 例: 「Test」という名前の以下のテーブルの場合

文字列をintに変換する方法
ID 名前 出生時間
4120 練習する 1996-09-26 16:44:15,581

クエリ:

SELECT Name, DATE_ADD(BirthTime, INTERVAL  1 YEAR) AS BirthTimeModified FROM Test;>

出力:

名前 生年月日変更済み
練習する 1997-09-26 16:44:15,581

クエリ:

SELECT Name, DATE_ADD(BirthTime,  INTERVAL 30 DAY) AS BirthDayModified FROM Test;>

出力:

名前 誕生日変更済み
練習する 1996-10-26 16:44:15,581

クエリ:

SELECT Name, DATE_ADD(BirthTime, INTERVAL  4 HOUR) AS BirthHourModified FROM Test;>

出力:

名前 誕生二回目
練習する 1996-10-26 20:44:15,581

DATE_SUB()

日付から指定された時間間隔を減算します。 DATE_SUB の構文は DATE_ADD と同じですが、DATE_SUB が日付の指定された間隔を減算するために使用される点が異なります。

ランダムSQLで並べ替える

DATEDIFF()

2 つの日付間の日数を返します。

構文:

DATEDIFF(日付1, 日付2);

date1 および date2 - 日付/時刻式

クエリ:

SELECT DATEDIFF('2017-01-13','2017-01-03') AS DateDiff;>

出力:

日付の差分
10

DATE_FORMAT()

日付/時刻データをさまざまな形式で表示します。

構文:

DATE_FORMAT(日付,形式);

日付は有効な日付であり、形式は日付/時刻の出力形式を指定します。使用できる形式は次のとおりです。

  • %a-曜日の短縮名(日~土)
  • %b-月の省略名 (1 月~12 月)
  • %c-月、数値 (0 ~ 12)
  • %D- 英語のサフィックスが付いた月の日 (0th、1st、2nd、3rd)
  • %d-日付、数値 (00 ~ 31)
  • %e-日付、数値 (0 ~ 31)
  • %f-マイクロ秒 (000000-999999)
  • %H時 (00-23)
  • %h-時間 (01-12)
  • %I-時間 (01-12)
  • %i-分、数値 (00-59)
  • %j-年間通算日 (001-366)
  • %k-時間 (0-23)
  • %l-時間 (1-12)
  • %M-月の名前 (1 月から 12 月)
  • %m-月、数値 (00-12)
  • %p-午前または午後
  • %r-時間、12 時間制 (hh:mm: ss の後に AM または PM が続く)
  • %S 秒 (00-59)
  • %s-秒 (00-59)
  • %T 時間、24 時間 (hh:mm: ss)
  • %U-Week (00-53) (日曜日が週の最初の日)
  • %u-週 (00-53) (月曜日が週の最初の日)
  • %V-Week (01-53) 日曜日が週の最初の日で、%X とともに使用されます。
  • %v-Week (01-53) 月曜日が週の最初の日で、%x とともに使用されます。
  • %W-曜日名(日曜日~土曜日)
  • %w-曜日 (0=日曜日、6=土曜日)
  • %X-日曜日が週の最初の日となる週の年 (4 桁、%V とともに使用)
  • %x - 月曜日が週の最初の日となる週の年 (4 桁、%v とともに使用)
  • %Y-年、数値、4 桁
  • %y-年、数値、2 桁