SQLite时间函数&日期时间、字符串、时间戳互相转换

Easter79
• 阅读 792

‘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
1
2
3
4
**转时间戳
select strftime('%s','now');    -->结果:1525502284
select strftime('%s','2018-05-05');     -->结果:1525478400
1
2
时间戳转时间、字符串
select datetime(1525502284, 'unixepoch', 'localtime');  -->结果:2018-05-05 14:38:04
--对参数不理解可参考文末“修饰符”
1
2
扩展:SQLite的五个时间函数:
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(format, timestring, modifier, modifier, ..):返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数
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):
序号    日期时间字符串    实例
1    YYYY-MM-DD    2018-05-05
2    YYYY-MM-DD HH:MM    2018-05-05 12:10
3    YYYY-MM-DD HH:MM:SS.SSS    2018-05-05 15:39:20.100
4    MM-DD-YYYY HH:MM    05-05-2018 12:10
5    HH:MM    同理
6    YYYY-MM-DDTHH:MM    同理
7    HH:MM:SS    同理
8    YYYYMMDD HHMMSS    同理
9    now    2018-05-05 15:39:20
10    DDDDDDDDDD    1525478400(时间戳)
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    增加/减去指定数值的秒
7    start of year    当前日期的开始年
8    start of month    当前日期的开始月
9    start of day    当前日期的开始日
11    weekday N    表示返回下一个星期是N的日期和时间
12    unixepoch    用于将日期解释为UNIX时间(即:自1970-01-01以来的秒数,也就是时间戳)
13    localtime    表示返回本地时间
14    utc    表示返回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(时区问题)
--------------------- 
作者:markix 
来源:CSDN 
原文:https://blog.csdn.net/qq\_31772441/article/details/80205560 
版权声明:本文为博主原创文章,转载请附上博文链接!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Stella981 Stella981
2年前
SQLite时间函数&日期时间、字符串、时间戳互相转换
‘now’为当前日期时间\\转字符串、时间SELECTdate('now');  结果:20180505SELECTtime('now');  结果:06:55:38SELECTdatetime('now');结果:2018050506:55:38SELECTstrftime(
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
2年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
2年前
Python time模块 返回格式化时间
常用命令  strftimetime.strftime("%Y%m%d%H:%M:%S",formattime)第二个参数为可选参数,不填第二个参数则返回格式化后的当前时间日期201812112:00:00time.strftime('%H:%M:%S')返回当前时间的时分秒time.strftim
Wesley13 Wesley13
2年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k