SQLite julianday() 函数使用指南

SQLite julianday() 函数将通过一个时间值和修饰符指定的时间值转为一个儒略天数,即,从格林威治时间公元前 4714 年 11 月 24 日中午 12 点开始的天数。

julianday() 语法

这里是 SQLite julianday() 的语法:

julianday(time_value [, modifier, modifier, ...])

参数

time_value

可选的。时间值。时间值可以采用以下任何格式,如下所示。该值通常是一个字符串,但在格式为 12 的情况下,它可以是整数或浮点数。

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now - 表示当前时间
  12. DDDDDDDDDD.dddddd - 带小数部分的儒略历日期数
modifier

可选的。您可以使用零个或多个更改时间值。多个修饰符从左到右按照顺序应用。您可以使用如下的修饰符:

  1. NNN days - 时间值 time_value 加上 NNN
  2. NNN hours - 时间值 time_value 加上 NNN 小时
  3. NNN minutes - 时间值 time_value 加上 NNN 分钟
  4. NNN.NNNN seconds - 时间值 time_value 加上 NNN.NNNN
  5. NNN months - 时间值 time_value 加上 NNN 个月
  6. NNN years - 时间值 time_value 加上 NNN
  7. start of month - 回退到时间值 time_value 的月初
  8. start of year - 回退到时间值 time_value 的年初
  9. start of day - 回退到时间值 time_value 当天的开始
  10. weekday N - 将时间值 time_value 前进到工作日 N
  11. julianday - Unix 时间戳
  12. julianday - 返回儒略历
  13. auto
  14. localtime - 返回当前时间
  15. utc - 返回 utc 时间

NNN 表示一个数字。 可以是整数或者负数。 如果 NNN 是负数,则表示减去。

返回值

SQLite julianday() 函数返回一个指定的时间值对应的儒略天数(可能带小数部分)。如果不提供任何参数, julianday() 函数返回当前的日期时间对应的儒略天数。

julianday() 示例

这里列举了一些示例以展示 SQLite julianday() 函数的常用的用法。

  • 使用 SQLite julianday() 函数获取当前时间的儒略天数:

    SELECT julianday(), julianday('now');
    
    julianday()       julianday('now')
    ----------------  ----------------
    2459786.85543663  2459786.85543663
  • 使用 SQLite julianday() 函数将 2022-07-26 12:00:00 的的前一天转为儒略天数:

    SELECT
        julianday('2022-07-26 12:00:00'),
        julianday('2022-07-26 12:00:00', '-1 day');
    
    julianday('2022-07-26 12:00:00')  julianday('2022-07-26 12:00:00', '-1 day')
    --------------------------------  ------------------------------------------
    2459787.0                         2459786.0
  • 使用 SQLite julianday() 函数获取当年的最后一天对应的儒略天数:

    SELECT julianday('now', 'start of year', '1 year', '-1 day');
    
    julianday('now', 'start of year', '1 year', '-1 day')
    -----------------------------------------------------
    2459944.5