sqlite> select date('2021-01-01', '+5 days');
2021-01-06
注意,“±NNN months”首先会将日期转化为 YYYY-MM-DD 格式,然后增加 ±NNN 月份,最后规范化结果。例如,日期 2001-03-31 使用修饰符 ‘+1 month’ 时首先产生 2001-04-31,由于 4 月份只有 30 天,因此最终规范化的结果为 2001-05-01。类似,如果原始数据是闰年中的 2 月 29 日,修饰符是 ±N years 并且 N 不是 4 的倍数,也会产生同样的效果。
第 7 到第 9 个修饰符用于将日期转换为当前月、年或者日的开始,例如:
sqlite> select date('now','start of month','+1 month','-1 day');
2021-08-31
第 10 个修饰符(weekday N)用于将日期转换为(如有必要)下一周中的指定日期。星期天为 0,星期一为 1,依次类推。如果被转换的日期已经是当前周中的指定日期,不做任何修改。例如
sqlite> select date('now','start of year','+9 months','weekday 2');
2021-10-05
第 11 个修饰符(unixepoch)只能修改 DDDDDDDDDD 格式的时间值。该修饰符将 DDDDDDDDDD 转换为 Unix 时间戳(1970 年以来的秒数),而不是通常情况下的儒略日天数。例如:
sqlite> select datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
如果 unixepoch 修饰符前面不是 DDDDDDDDDD 格式的时间值,或者它们之间存在其他修饰符,转换的结果不可预期。
第 12 个修饰符(localtime)将左侧的 UTC 时间值转换为本地时区对应的时间值。如果左侧的时间值不是 UTC 时区,转换的结果不可预期。例如:
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-20 02:51:06
第 13 个修饰符(utc)执行的转换操作和 localtime 正好相反,将左侧的本地时间转化为 UCT 时间。如果左侧的时间值不是本地时间,转换的结果不可预期。
SQLite数据库的日期型字段,直接查询出来可能是一个浮点数数值,比如:43535.647531019,而不是期待的yyyy-MM-dd这样格式的日期。
原因是,SQLite表中的日期型字段实际是以浮点数保存的,含义是自1899-12-30开始的天数,小数部分就是时分秒折算出的天数。
要以yyyy-MM-dd这样的格式显示SQLite日期,必须用下面这样的SQL语句:
select strf...
数据库为 sqlite3
表结构为 tblTask(ID int,TaskName varchar(20),ActionDate datetime)
问:sqlite 通过ActionDate 取季度 的 sql怎么写?
我这里暂时只知道几个例子:
取年份: select * from tblTask where strftime('%Y',ActionDate)='2011' --2
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 算起的秒数。
来看一下;
创建表,使用 date 或 datetim...
date(timestring, modifier, modifier, …)
time(timestring, modifier, modifier, …)
datetime(timestring, modifier, modifier, …)
julianday(timestring, modifier, modifier, …)
strftime(format, timestring, modifier, modifier, …)
记录一下,SQLite中nullif和ifnull的区别:nullif(null,'') --输出null
nullif('','') --输出null
nullif('t','t') --输出null
nullif('tl','t') --输出tl
--看输出值发现,nullif是前后对比函数,一致返回null,否则返回第一个参数ifnull('','t')
SELECT
datetime(CHANGE_DATE,'localtime'),
strftime('%Y-%m-%d',CHANGE_DATE,'localtime'),
datetime('now','localtime'),
strftime('%Y-%m-%d','now','localtime'),
SQLite主要支持以下四种与日期和时间相关的函数,如:
1. date(timestring, modifier, modifier, ...)
2. time(timestring, modifier, modifier, ...)
3. datetime(timestring, modifier, modifier, ...)
4. strftime(format, t
create table log(
content varchar(256),
logtime TIMESTAMP default (datetime('now', 'localtime'))
或者在工具中设置:
今天遇到了 rom项目上的记事本中的代码中 sqllite的日期函数操作。以前还真的没有特别注意过这个东西。所以就查了下资料,来记录下支持的数据类型 :
NULL、
INTEGER、
REAL、
TEXT、
BLOB,
smallint 16 位元的整数。
interger 32 位元的整数。
decimal(p,s)
你可以使用SQLite的内置日期和时间函数来计算日期的差值。具体方法如下:
1. 使用`DATE()`函数将日期字符串转换为日期类型,例如`DATE('2021-10-01')`。
2. 使用`JULIANDAY()`函数将日期转换为Julian日,例如`JULIANDAY('2021-10-01')`。
3. 使用`CAST()`函数将Julian日转换为整数类型,例如`CAST(JULIANDAY('2021-10-01') AS INTEGER)`。
4. 使用`DATEDIFF()`函数计算两个日期之间的天数差,例如`DATEDIFF('day', '2021-10-01', '2021-10-10')`。
下面是一个例子,假设你有一个表`orders`,其中包含订单日期和交付日期,你想计算每个订单的交付日期与订单日期之间的天数差:
SELECT order_id, DATEDIFF('day', DATE(order_date), DATE(delivery_date)) AS days_diff
FROM orders;
这将返回一个包含订单ID和交付日期与订单日期之间的天数差的结果集。