添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

**转字符串、时间

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):

序号 日期时间字符串 实例
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):

序号 符号 作用
[+-]NNN years 增加/减去指定数值的年
[+-]NNN months 增加/减去指定数值的月
[+-]NNN days 增加/减去指定数值的天
[+-]NNN hours 增加/减去指定数值的小时
[+-]NNN minutes 增加/减去指定数值的分钟
[+-]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(时区问题)

水平有限,小文如有错漏,请各路大神多指点。

‘now’为当前日期时间**转字符串、时间SELECT date('now'); -->结果:2018-05-05SELECT time('now'); -->结果:06:55:38SELECT datetime('now'); -->结果:2018-05-05 06:55:38SELECT strftime('%Y-%m-%d %H:%M:... sqlite > SELECT datetime(1377168853, 'unixepoch', 'localtime'); +------------------------------------------------+ | datetime(1377168853, 'unixepoch', 'localtime') | +------------------------------------------------+ | 2013-08-22 18:54:13 | +---------------------------------
就像在提交日志的时候系统会把提交的 时间 记录下来一样,如果想在 sqlite 3下创建的表里插入数据的时候也把插入数据的 时间 点存储在 sqlite 数据库里怎么处理呢? 创建一个数据库,如foo.db 在这个表里创建一个表: CREATE TABLE time([ID] INTEGER PRIMARY KEY,[IDCardNo] VARCHAR (50),[CreatedTime]
在android中使用 sqlite 时, 日期 处理比较特殊,网上找了很多种方法,试验出一种相对来说比较合适的: 把 日期 类型作为integer建表,在插入数据库时,用new Date().getTime()存入,取出时,再转为Date类型Date date = new Date(cursor.getLong(i)); 取某个 时间 段内的数据时,把查询的 日期 转为long再转为string... date(timestring, modifier, modifier, …) time(timestring, modifier, modifier, …) datetime(timestring, modifier, modifier, …) julianday(timestring, modifier, modifier, …) strftime(format, timestring, modifier, modifier, …)
可以使用 SQLite 内置的date 函数 将text列 转换 日期 类型。例如,假设text列名为date_str,可以使用以下语句将其 转换 日期 类型: SELECT date(date_str) FROM table_name; 其中,table_name是包含date_str列的表名。这将返回一个 日期 类型的结果集。