SQLite时间函数⽇期时间、字符串、时间戳互相转换
‘now’为当前⽇期时间
**转字符串、时间
SELECT date('now');-->结果:2018-05-05
SELECT time('now');-->结果:06:55:38
SELECT datetime('now');-->结果:2018-05-05 06:55:38
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');-->结果:2018-05-05 06:55:38
**转时间戳
select strftime('%s','now');-->结果:1525502284
select strftime('%s','2018-05-05');-->结果:1525478400
时间戳转时间、字符串
select datetime(1525502284, 'unixepoch', 'localtime');-->结果:2018-05-05 14:38:04
--对参数不理解可参考⽂末“修饰符”
扩展:SQLite的五个时间函数:
1. date(timestring, modifier, modifier, …)**:以 YYYY-MM-DD 格式返回⽇期
2. time(timestring, modifier, modifier, …)**:以 HH:MM:SS 格式返回时间
3. datetime(timestring, modifier, modifier, …)**:以 YYYY-MM-DD HH:MM:SS 格式返回⽇期时间
4. julianday(format, timestring, modifier, modifier, ..):返回从格林尼治时间的公元前 4714 年 11 ⽉ 24 ⽇正午算起的天数
5. strftime(format, timestring, modifier, modifier, ..):根据第⼀个参数指定的格式字符串返回格式化的⽇期
讲道理其他四个函数都可以⽤ strftime() 函数来表⽰:
date(…) –> strftime(‘%Y-%m-%d’,…)
time(…) –> strftime(‘%H:%M:%S’,…)
datetime(…) –> strftime(‘%Y-%m-%d %H:%M:%S’,…)
julianday(…) –> strftime(‘%J’,…)
来看看各参数的取值格式(⽂末举例):
⽇期时间字符串(timestring):
序号⽇期时间字符串实例1YYYY-MM-DD2018-05-05 2YYYY-MM-DD HH:MM2018-05-05 12:10 3YYYY-MM-DD HH:MM:SS.SSS2018-05-05 15:39:20.100 4MM-DD-YYYY HH:MM05-05-2018 12:10 5HH:MM同理6YYYY-MM-DDTHH:MM同理7HH:MM:SS同理8YYYYMMDD HHMMSS同理9now2018-05-05 15:39:20
unix时间戳转换日期格式9now2018-05-05 15:39:20序号⽇期时间字符串实例10DDDDDDDDDD1525478400(时间戳)
strftime() 函数,格式化串(format):
符号描述
%d⼀⽉中的第⼏天 01-31
%f⼩数形式的秒,SS.SSSS
%H⼩时 00-24
%j⼀年中的第⼏天 01-366
%J Julian Day Numbers
%m⽉份 01-12
%M分钟 00-59
%s从 1970-01-01⽇开始计算的秒数
%S秒 00-59
%w星期,0-6,0是星期天
%W⼀年中的第⼏周 00-53
%Y年份 0000-9999
%%% 百分号
修饰符(modifier):
序号符号作⽤1[+-]NNN years增加/减去指定数值的年2[+-]NNN months增加/减去指定数值的⽉3[+-]NNN days增加/减去指定数值的天4[+-]NNN hours增加/减去指定数值的⼩时5[+-]NNN minutes增加/减去指定数值的分钟6[+-]NNN.NNNN seconds增加/减去指定数值的秒7start of year当前⽇期的开始年8start of month当前⽇期的开始⽉9start of day当前⽇期的开始⽇11weekday N表⽰返回下⼀个星期是N的⽇期和时间12unixepoch⽤于将⽇期解释为UNIX时间(即:⾃1970-01-01以来的秒数,也就是时间戳) 13localtime表⽰返回本地时间14utc表⽰返回UTC(世界统⼀时间)时间
重点:修饰符运⽤实例
SELECT datetime('now');-->结果:2018-05-05 08:10:26(和本机时间可能不⼀致,时区问题请看使⽤‘localtime’修饰符后的变化)
SELECT datetime('now','1 years');-->结果:2019-05-05 08:10:26
SELECT datetime('now','1 months');-->结果:2018-06-05 08:10:26
SELECT datetime('now','1 days');-->结果:2018-05-06 08:10:26
SELECT datetime('now','1 hours');-->结果:2018-05-05 09:10:26
SELECT datetime('now','1 minutes');-->结果:2018-05-05 08:11:26
SELECT datetime('now','1 seconds');-->结果:2018-05-05 08:10:27
SELECT datetime('now','start of year');-->结果:2018-01-01 00:00:00
SELECT datetime('now','start of month');-->结果:2018-05-01 00:00:00
SELECT datetime('now','start of day');-->结果:2018-05-05 00:00:00
SELECT datetime('now','weekday 0');-->结果:2018-05-06 08:10:26
(解释:2018-05-05是周六,“weekday 0”表⽰返回下周的周⽇(系统默认以周⽇为⼀周的开始0),明天06号是周⽇,所以,返回了2018-05-06)
SELECT datetime('1525478400','unixepoch');-->结果:2018-05-05 00:00:00(unixepoch⼀般⽤于解释时间戳)
SELECT datetime('now','localtime');-->结果:2018-05-05 16:10:26(你会发现这个时间⽐没使⽤‘localtime’参数的时间多了8个⼩时,因为中国是东⼋时区)SELECT datetime('now','utc');-->结果:2018-05-05 00:10:26(时区问题)
⽔平有限,⼩⽂如有错漏,请各路⼤神多指点。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论