**转字符串、时间
SELECT date('now');
SELECT time('now');
SELECT datetime('now');
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
**转时间戳
select strftime('%s','now');
select strftime('%s','2018-05-05');
时间戳转时间、字符串
select datetime(1525502284, 'unixepoch', 'localtime');
扩展: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(时间戳)
|
符号
|
描述
|
%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');
SELECT datetime('now','1 years');
SELECT datetime('now','1 months');
SELECT datetime('now','1 days');
SELECT datetime('now','1 hours');
SELECT datetime('now','1 minutes');
SELECT datetime('now','1 seconds');
SELECT datetime('now','start of year');
SELECT datetime('now','start of month');
SELECT datetime('now','start of day');
SELECT datetime('now','weekday 0');
(解释:2018-05-05是周六,“weekday 0”表示返回下周的周日(系统默认以周日为一周的开始0),明天06号是周日,所以,返回了2018-05-06)
SELECT datetime('1525478400','unixepoch');
SELECT datetime('now','localtime');
SELECT datetime('now','utc');
水平有限,小文如有错漏,请各路大神多指点。
‘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列的表名。这将返回一个
日期
类型的结果集。