julianday関数

広告

julianday関数は日付と時刻をユリウス日として取得する為に使用します。書式は次の通りです。

julianday(timestring, modifier, modifier, ...)

julianday関数の1番目の引数に日付と時刻を表す文字列を指定するとユリウス日を返します。(modifierの指定方法は別のページで詳しく見ていきますのでここでは気にしないで下さい)。

ユリウス日とはグレゴリオ暦の紀元前4714年11月24日(ユリアス暦の紀元前4713年1月1日)の正午を基準日とし、基準日からの通算日を表したものです。単位は日です。また基準日は正午となっている点に注意して下さい。

日時                                 ユリウス日
----------------------------------------------
紀元前4713年11月24日 12:00:00.000    0
紀元前4713年11月25日 00:00:00.000    0.5
2000年1月1日 00:00:00.000            2451544.5
2000年1月1日 12:00:00.000            2451545

ユリウス日は単位が日となっていますので、小数点以下の値は次のように換算することができます。

0.1 = 2.4 時間 / 144 分 / 8640 秒
0.01 = 0.24 時間 / 14.4 分 / 864 秒
0.001 = 0.024 時間 / 1.44 分 / 86.4 秒
0.0001 = 0.0024 時間 / 0.144 分 / 8.64 秒
0.00001 = 0.00024 時間 / 0.0144 分 / 0.864 秒

具体的には次のように使用します。

select julianday('2009-08-24 23:10:15');      /* 2455068.46545139 */

このSELECT文では'2009-08-24 23:10:15'の日時が表すユリウス日の2455068.46545139を取得します。

日付と時刻を表す文字列

julianday関数の1番目の引数に指定する日付と時刻を表す文字列は次のいずれかの形式で指定します。

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

例えば'2009-08-22'や'14:10:25'、または'2008-07-01 09:01:45'などです。時刻に関する値が省略された場合は'00:00:00.000'となります。また日付が省略された場合は'2000-01-01'となります。

'now'が指定すると現在の日時と時刻を設定します。(タイムゾーンはUTCです)。

'DDDDDDDDDD'はJulian day(ユリウス日)の形式です。ユリウス日を指定してユリウス日を取得するので引数に指定した値をそのまま取得することになります。

サンプル

では実際に試してみます。

まず日付だけを指定してみます。

select julianday('2009-08-25') as julianday;

p7-1

続いて日付と時刻を指定します。

select julianday('2009-08-25 13:15:42') as julianday;

p7-2

続いて時刻だけを指定します。

select julianday('13:15:42') as julianday;

p7-3

続いて'now'を指定します。

select julianday('now') as julianday;

p7-4

最後にユリウス日を指定してみます。

select julianday('2451544.5') as julianday;

p7-5

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)