SQLite 只有五种数据类型
存储类 | 描述 |
---|---|
NULL | 数据库中存储的值为NULL |
INTEGER | 其值是一个带符号的整数,根据值的大小存储在1,2,4,6,8字节中 |
REAL | 浮点数,存储8字节的IEEE浮点数 |
TEXT | 值是文本字符串,使用数据库编码存放 |
BLOB | 值是一个二进制数据,完全根据它的输入存放 |
Date 与 Time 数据类型
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
存储类 | 日期格式 |
---|---|
TEXT | 格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。 |
REAL | 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。 |
INTEGER | 从 1970-01-01 00:00:00 UTC 算起的秒数。 |
SQLite日期函数
使用日期函数能够有效的进行数据类型向日期的转换
函数 | 作用 |
---|---|
datetime() | 产生日期和时间 |
date() | 产生日期 |
time() | 产生时间 |
strftime() | 对产生的日期和时间进行格式化 |
在时间/日期函数里可以使用如下格式的字符串作为参数:
- YYYY-MM-DD
- YYYY-MM-DD HH:MM
- YYYY-MM-DD HH:MM:SS
- YYYY-MM-DD HH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- now
其中now是产生现在的时间。
举例
select datetime('now');
-- 2016-05-21 12:11:24
select datetime('2016-05-21');
-- 2016-05-21 00:00:00
select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');
结果:2006-10-17 01:08:00
select date('2006-10-17','+1 day','+1 year');
结果:2007-10-18
select datetime('now','start of year');
结果:2006-01-01 00:00:00
select datetime('now','start of month');
结果:2006-10-01 00:00:00
select datetime('now','start of day');
结果:2006-10-17 00:00:00
select datetime('now','+10 hour','start of day','+10 hour');
结果:2006-10-17 10:00:00
select datetime('now','localtime');
结果:2006-10-17 21:21:47
select datetime('now','+8 hour');
结果:2006-10-17 21:24:45
strftime()
strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, …)
它可以用以下的符号对日期和时间进行格式化:
%d 月份, 01-31
%f 小数形式的秒,SS.SSS
%H 小时, 00-23
%j 算出某一天是该年的第几天,001-366
%m 月份,00-12
%M 分钟, 00-59
%s 从1970年1月1日到现在的秒数
%S 秒, 00-59
%w 星期, 0-6 (0是星期天)
%W 算出某一天属于该年的第几周, 01-53
%Y 年, YYYY
%% 百分号
strftime()的用法举例如下:
select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2006.10.17 21:41:09