SQL道場 日付時刻関数 TO_DAYS関数

SQLで紀元0年1月1日からの日数を取得するTO_DAYS関数について記載しています。

対応データベース:MySQL

TO_DAYS関数の文法

SELECT TO_DAYS(日付) FROM テーブル
SELECT TO_DAYS (date) FROM table
引数
Arguments
日付
Date
文字列型
String type
返値
return value
数値型 紀元0年1月1日からの日数が戻ります。
Number Returns the number of days since January 1, 0 A.D.

TO_DAYS関数は指定された日付の紀元0年1月1日からの日数を返します。紀元0年1月1日からの日数を日付にする場合はFROM_DAYS関数を使います。

The TO_DAYS function returns the number of days since January 1, 0 A.D. for the specified date. Use the FROM_DAYS function to date days from January 1, 0 A.D.

TO_DAYS() は、カレンダーが変更された際に失われた日が考慮されないため、グレゴリオ暦 (1582) の出現よりも前の値とともに使用するために設計されていません。 日付が 1582 よりも前の場合は (ほかのロケールでは、さらにあとの年になる可能性があります)、この関数の結果は信頼できません。 詳細は、セクション12.9「MySQL で使用されるカレンダー」,を参照してください。

MySQL では セクション11.2「日時データ型」 のルールを使用して、日付の 2 桁の年の値が 4 桁の形式に変換されることを忘れないでください。 たとえば、’2008-10-07′ と ’08-10-07′ は同じ日付と認識されます。

MySQL では、ゼロの日付は ‘0000-00-00′ として定義されます。ただし、このデータ自体は無効とみなされます。 つまり、’0000-00-00’ および ‘0000-01-01’ の場合、TO_DAYS() は次に示す値を返します。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_to-days

実行例

MySQLの実行例

/* MySQL 紀元0年1月1日からの日数を取得するサンプル */
SELECT TO_DAYS('2020-01-01');
TO_DAYS関数サンプル実行結果