sqlite3-时间
在sqlite3中时间函数有好几个,刚开始看着好乱,连一个系统时间都搞不定。不过学完了发现它就像模块化的组装语句,语法更口语化
如果只是随便写写,相比而言,oracle感觉简单一些,容易上手,sqlite看着就特别烦的感觉
oracle
- 比如Oracle中获取系统时间使用
sysdate
,使用to_date()
来格式化时间,基本上能满足日常使用。
1 | select sysdate from dual; |
sqlite
我觉得这个在取时间的时候localtime是一个必须的参数,因为加了这个时间才是本地时间,不然有啥用呢
- 在sqllite中获取时间有好几个不同的函数
date(timestring, modifier, modifier, ...)
获取日期 (年月日)time(timestring, modifier, modifier, ...)
获取时间 (时分秒)datetime(timestring, modifier, modifier, ...)
获取日期加时间(年月日时分秒)
- 格式化时间
strftime(format, timestring, modifier, modifier, ...)
1 | select date(); --select date('now'); |
## 修饰符
x days
1
select date('now','+3 days');
xhours
1
select time('now','localtime','-1 hours'); --获取系统时间
x minutes
x.x seconds
x months
x years
start of month
1
select date('now','start of month');
start of year
start of day
weekday N
unixepoch
localtime
1
select time('now','localtime')
utc
time,datetime
默认取的是子午线所在的时间,但是会发现这个时间(小时)与我们系统(东八区)时间并不相同。所以需要修饰符modifier
1 | select time('now','localtime'); --获取正确本地时间,可以看出localtime是一个modifier,now是一个timestring |
格式化
替换 | 描述 |
---|---|
%Y | 年,YYYY |
%m | 月,00-12 |
%d | 一月中的第几天,01-31 |
%H | 小时,00-23 |
%M | 分,00-59 |
%S | 秒,00-59 |
%f | 带小数部分的秒,SS.SSS |
%s | 从 1970-01-01 算起的秒数 |
%j | 一年中的第几天,001-366 |
%w | 一周中的第几天,0-6 (0 is Sunday) |
%W | 一年中的第几周,01-53 |
%% | % symbol |
格式化日期strftime(format, timestring, modifier, modifier, ...)
1 | select strftime('%Y-%m-%d %H:%M:%S','now'); |