SQLite--日期 & 时间

来源:互联网 发布:淘客营销软件 编辑:程序博客网 时间:2024/06/01 11:04

函数

函数 描述 date(timestring, modifier, modifier, …) 以 YYYY-MM-DD 格式返回日期。 time(timestring, modifier, modifier, …) 以 HH:MM:SS 格式返回时间。 datetime(timestring, modifier, modifier, …) 以 YYYY-MM-DD HH:MM:SS 格式返回。 julianday(timestring, modifier, modifier, …) 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数。 strftime(format, timestring, modifier, modifier, …) 这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。

上述五个日期和时间函数把时间字符串作为参数。时间字符串后跟零个或多个 modifier 修饰符。strftime() 函数也可以把格式字符串 format 作为其第一个参数。

格式化

SQLite 提供了非常方便的函数 strftime() 来格式化任何日期和时间。可以使用以下的替换来格式化日期和时间:

替换 描述 %d 一月中的第几天,01-31 %f 带小数部分的秒,SS.SSS %H 小时,00-23 %j 一年中的第几天,001-366 %J 儒略日数,DDDD.DDDD %m 月,00-12 %M 分,00-59 %s 从 1970-01-01 算起的秒数 %S 秒,00-59 %w 一周中的第几天,0-6 (0 is Sunday) %W 一年中的第几周,01-53 %Y 年,YYYY %% % symbol

时间字符串

一个时间字符串可以采用下面任何一种格式:

时间字符串 实例 YYYY-MM-DD 2017-04-24 YYYY-MM-DD HH:MM 2017-04-24 13:40 YYYY-MM-DD HH:MM:SS.SSS 2017-04-24 13:40:06.100 MM-DD-YYYY HH:MM 04-24-2017 13:40 HH:MM 13:40 YYYY-MM-DDTHH:MM 2017-04-24 13:40 HH:MM:SS 13:40:06 YYYYMMDD HHMMSS 20170424 134006 now 2017-04-24

可以使用 “T” 作为分隔日期和时间的文字字符。

//当前日期 2017-04-24SELECT date('now');
//计算美国"独立宣言"签署以来的天数 87952.2866614121SELECT julianday('now') - julianday('1776-07-04');

修饰符(Modifier)

时间字符串后边可跟着零个或多个的修饰符,这将改变有上述五个函数返回的日期和/或时间。任何上述五大功能返回时间。修饰符应从左到右使用,下面列出了可在 SQLite 中使用的修饰符:

  1. NNN days
  2. NNN hours
  3. NNN minutes
  4. NNN.NNNN seconds
  5. NNN months
  6. NNN years
  7. start of month
  8. start of year
  9. start of day
  10. weekday N
  11. unixepoch
  12. localtime
  13. utc

前面6个修饰符是对时间字符串及其前面的修饰符处理后的时间结果进行增加或者减少。例如,对于YYYY-MM-DD格式的时间,当使用”±NNN months”修饰符时,则是对MM增加/减少相应的月数。

localtime:当地时间,在中国就是北京时间。

utc:在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。北京时区是东八区,领先UTC八个小时,now 默认为UTC。

//当月的最后一天 2017-04-30SELECT date('now','start of month','+1 month','-1 day');
//将日期确定在本年度十月的第一个星期二 2017-10-03SELECT date('now','start of year','+9 months','weekday 2');

unixepoch:Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.
一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

//得到当地当前时间的UNIX时间戳select strftime('%s','now', 'localtime');---------------------------------1493043705//将UNIX时间戳转化为时间日期格式select datetime(1493043705, 'unixepoch');---------------------------------2017-04-24 14:21:45
//计算从 UNIX 纪元算起的以秒为单位的时间(类似 strftime('%s','now') ,不同的是这里有包括小数部分):sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;1493017024.58601

结束语:本文仅用来学习记录,参考查阅。

3 0
原创粉丝点击