SQLite 時間 查詢

2021-07-07 10:51:45 字數 4641 閱讀 3079

datetime('now')是錯的,應該是datetime('now', 'localtime'),這樣才記錄手機的本地時間,不然記錄的是手機的格林威治時間。

date(日期時間字串, 修正符, 修正符, ……)

time(日期時間字串, 修正符, 修正符, 

……)datetime(日期時間字串, 修正符, 修正符, ……)

julianday(日期時間字串, 修正符, 修正符, 

……)strftime(日期時間格式, 日期時間字串, 修正符, 修正符, 

……)上述五個函式需要乙個日期時間字串做引數,後面可以跟零到多個修正符引數。而 strftime() 

函式還需要乙個日期時間格式字串做第乙個引數。

date() 函式返回乙個以 「yyyy-mm-dd」 為格式的日期;

time() 函式返回乙個以 「yyyy-mm-dd hh:mm:ss」 

為格式的日期時間;

julianday() 函式返回乙個天數,從格林威治時間西元前2023年11月24號開始算起;

strftime() 

函式返回乙個經過格式話的日期時間,它可以用下面的符號對日期和時間進行格式化:

%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

%% % 

百分號其他四個函式都可以用 strftime() 函式來表示:

date(…) 

-> 

strftime(「%y-%m-%d」,…)

time(…) 

-> 

strftime(「%h:%m:%s」,…)

datetime(…) 

-> 

strftime(「%y-%m-%d %h:%m:%s」,…)

julianday(…) 

-> 

strftime(「%j」,…)

日期時間字串

可以用以下幾種格式:

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

nowdddd.dddd

在第五種到第七種格式中的「t」是乙個分割日期和時間的字元;第八種到第十種格式只代表2000-01-01日的時間,第十一種格式的』now』表示返回乙個當前的日期和時間,使用格林威治時間(utc);第十二種格式表示乙個 

julian day numbers。

修正符

nnn days

nnn hours

nnn minutes

nnn.nnnn seconds

nnn months

nnn 

years

start of month

start of year

start of week

start of 

dayweekday 

nunixepoch

localtime

utc前六個修正符就是簡單的增加指定數值的時間和日期;第七到第十個修正符表示返回當前日期的開始;第十乙個修正符表示返回下乙個星期是n的日期和時間;第十二個修正符表示返回從1970-01-01開始算起的秒數;第十三個修正符表示返回本地時間。

下面舉一些例子:

計算機當前時間

select date(『now』)

計算機當前月份的最後一天

select date(『now』,』start of 

month』,』+1 month』,』-1 day』)

計算unix 時間戳1092941466表示的日期和時間

select 

datetime(『1092941466』,』unixepoch』)

計算 unix 時間戳1092941466 表示的本地日期和時間

select 

datetime(『1092941466』,』unixepoch』,』localtime』)

計算機當前unix 時間戳

select 

strftime(『%s』,』now』)

兩個日期之間相差多少天

select 

jolianday(『now』)-jolianday(『1981-12-23』)

兩個日期時間之間相差多少秒

select 

julianday('now')*86400 - julianday('2004-01-01 

02:34:56')*86400

計算今年十月份第乙個星期二的日期

select date('now','start of year','+9 

months','weekday 

2');

得到年strftime(『%y』,'2008-4-28')

得到月strftime(『%m』,'2008-4-28')

同樣,我們也可以通過strftime來得到其它所要的資訊,但是要記得,給時間加引號

例1.select datetime('now');

結果:2006-10-17 12:55:54

例2.select datetime('2006-10-17');

結果:2006-10-17 12:00:00

例3.select datetime('2006-10-17 00:20:00','+1 hour','-12 

minute');

結果:2006-10-17 01:08:00

例4.select date('2006-10-17','+1 day','+1 year');

結果:2007-10-18

例5.select datetime('now','start of year');

結果:2006-01-01 00:00:00

例6.select datetime('now','start of month');

結果:2006-10-01 00:00:00

例7.select datetime('now','start of day');

結果:2006-10-17 00:00:00

例8.select datetime('now','+10 hour','start of day','+10 

hour');

結果:2006-10-17 10:00:00

例9.select datetime('now','localtime');

結果:2006-10-17 21:21:47

例10.

select datetime('now','+8 hour');

結果:2006-10-17 21:24:45

例3中的+1 hour和-12 minute表示可以在基本時間上(datetime函式的第乙個引數)增加或減少一定時間。

例5中的start of year表示一年開始的時間。

從例8可以看出,儘管第2個引數加上了10個小時,但是卻被第3個引數「start of 

day」把時間歸零到00:00:00,隨後的第4個引數在00:00:00

的基礎上把時間增加了10個小時變成了10:00:00。

例9把格林威治時區轉換成本地時區。

例10把格林威治時區轉換成東八區。

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 從2023年1月1日到現在的秒數

%s 秒, 00-59

%w 星期, 0-6 (0是星期天)

%w 算出某一天屬於該年的第幾周, 

01-53

%y 年, yyyy

%% 百分號

strftime()的用法舉例如下:

例11.

select strftime('%y.%m.%d 

%h:%m:%s','now','localtime');

結果:2006.10.17 21:41:09

例11用圓點作為日期的分隔附,並把時間轉換為當地的時區的時間

Sqlite 時間段查詢

1.首先建立乙個資料庫 create table date tbl id integer primary key autoincrement,date date default datetime now localtime time time default datetime now localti...

sqlite時間段查詢

同樣的sql語句,查不出資料來 select from table1 where t1 2017 6 1 and t1 2017 6 5 改成select from table1 where t1 2017 06 01 and t1 2017 06 05 這樣就可以查出資料來 資料庫中的t1可以設定...

SQLite 日期 時間

sqlite 支援以下五個日期和時間函式 序號函式例項1 date timestring,modifiers.以 yyyy mm dd 格式返回日期。2time timestring,modifiers.以 hh mm ss 格式返回時間。3datetime timestring,modifiers...