SQLite 日期和時間的操作


Aug 2nd, 2010 | Comments


SQLite 提供了日期時間 (DateTime) 的類型,可讓我們儲存時間性的資料,但原來 SQLite 將 DateTime 欄位看成一個字串,就算你的日期不正確也會給你入進資料庫的,只是可能你以後想要某段時間的資料時會有些資料顯示不到。


SQLite 提供了一些方法去幫助我們去操作日期和時間,你可以將 Unix Time Stamp 儲存到 DateTime 欄位,亦可以將實際的日期如: 2010-08-02 15:30.056 放到 DateTime 欄位,SQLite 提供了一些方法可以令我們在這些不同類型的時間格式中互相轉換。


SQLite 一共提供了五個方法:
date(時間字串, 參數, 參數, …, …)
time(時間字串, 參數, 參數, …, …)
datetime(時間字串, 參數, 參數, …, …)
julianday(時間字串, 參數, 參數, …, …)
strftime(時間格式, 時間字串, 參數, 參數, …, …)


第一個方法很明顯會返回一個字串,但不包括時間內容。


第二個方法會返回一個時間字串,但不包括日期內容。


第三個方法會返回一個日期加時間的字串。


第四個有點特殊,自己看一看 Wiki: 儒略日


第五個則可以將日期時間轉為你想要的格式。


時間字串只可以是以下類型:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD


解釋一下: YYYY 代表年,MM 代表月份,DD 代表日子,HH 代表小時,MM 代表分鐘,SS 代表秒。
依第四行的格式代表現在日期時間會是: 2010-08-02 16:02:32.562


第一行只是日期,並沒有時間內容。


第二至七行是日期連時間,第四到第七行要留意,日期和時間中間有一個 T,這個是一個分隔號,用來分開日期和時間的,是 ISO 8601 的時間格式。


第八至十行只是時間,並沒有日期內容。


第十一行有些特殊,輸入 now 會拿到系統現在時間。


第十二行則是 Unix Time Stamp。


時間格式:
%d - 月份內的日期
%f - 秒數 (準確至千份一秒)
%H - 小時
%j - 年份內的第幾日 (沒有潤年最大 365, 潤年最大 366)
%m - 月份
%M - 分鐘
%s - Unix Time Stamp
%w - 星期 (0 是星期日,6 是星期六)
%W - 年份內的第幾個星期
%Y - 年份
%% - 顯示 % 時使用


NNN days - 在現時日期加上多少日 (加兩日 2 days)
NNN hours - 在現時時間加上多少小時
NNN minutes - 在現時時間加上多少分鐘
NNN.NNNN seconds - 在現時時間加上多少秒
NNN months - 在現時日期加上多少個月
NNN years - 在現時日期加上多少年
start of month - 返回現時日期的月份的第一日,零時零分
start of year - 返回現時日期的年份,第一個月,第一日,零時零分
start of day - 返回現在時間的零時零分
weekday N - 返回未到但最接迎的星期日子 (0 是星期日,6 是星期六)
unixepoch - 時間字串為 Unix Time Stamp 才要使用
localtime - 加上你現在時區的時間,台灣是 GMT +8,即是現在時間加上 8 小時
utc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值