sqlite 日期型 字串轉為日期型

來源:互聯網
上載者:User

標籤:

因為sqlite為弱引用,使用欄位前將他強制轉為日期型,用datetime。或者最原始的 strftime。

SELECT distinct ID from testTable where datetime(availDate) between datetime(‘2015-01-12 04:00‘) and datetime(‘2015-01-13 00:00‘);

 

SQLite日期時間函數

 

SQLite支援以下五個日期時間函數:

  1. date(timestring, modifier, modifier, …)
  2. time(timestring, modifier, modifier, …)
  3. datetime(timestring, modifier, modifier, …)
  4. julianday(timestring, modifier, modifier, …)
  5. strftime(format, timestring, modifier, modifier, …)

這五個函數都是以時間字元竄(timestring)為參數,同時,時間字元竄後面還可以接收零個或者多個修飾符。另外,strftime()函數與其它的四個函數有點區別,它還可以接收一個字元竄格式(與C函數中printf函數使用字元竄格式)。

SQLite的日期時間函數使用的是ISO-8601日期時間格式規範中的子集。date()函數返回的日期格式為:YYYY-MM-DD,time()函數返回的時間格式為:HH:MM:SS,datetime()函數返回的格式為”YYYY-MM-DD HH:MM:SS”。julianday()返回的是儒略日期(Julian day)——從公元前4714年11月24日正午(以格林威治時間為準)至當前的天數。strftime()函數則按照使用者指定的格式字元竄(第一個參數)來格式化使用者的時間輸入(第二個參數)。格式字元竄的組成與C函數中的格式化參數基本相似,但表示的意義卻不相同。主要如下:
%d  day of month: 00 
%f  fractional seconds: SS.SSS 
%H hour: 00-24 
%j day of year: 001-366 
%J Julian day number 
%m month: 01-12 
%M minute: 00-59 
%s seconds since 1970-01-01 
%S seconds: 00-59 
%w day of week 0-6 with sunday==0 
%W week of year: 00-53 
%Y year: 0000-9999 
%% %

另外,所有其它日期時間函數能夠表達的格式,strftime()函數都可以做,如下:
Function        Equivalent strftime()
date(…)          strftime(‘%Y-%m-%d’, …) 
time(…)          strftime(‘%H:%M:%S’, …) 
datetime(…)    strftime(‘%Y-%m-%d %H:%M:%S’, …) 
julianday(…)    strftime(‘%J’, …)

但是,之所以還提供了strftime之外的其它函數,則完全是從便捷與效能上的考慮。

時間字元竄(Time String)

時間字元竄可以以下的任意一種形式:

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now
  12. DDDDDDDDDD

在第5至7中,T是用來分隔日期時間的(參照ISO-8601)。8至10指定的是時間格式,由於沒有日期輸入,這幾個格式預設日期為2000-01-01。第11條中,’now’ 將被轉化為當前的日期時間。

修飾符(Modifiers)

時間字元竄(time string)後台可以加上0個或者多個修飾符用以輔助改變時間字元竄。每一個修飾符都是對其左邊值的轉換,當有多個修飾符時,其生效的順序為從左至右。可用的修改符有:

  1. NNN days
  2. NNN hours
  3. NNN minutes
  4. NNN.NNNN seconds
  5. NNN months
  6. NNN years
  7. start of month
  8. start of year
  9. start of day
  10. weekday N
  11. unixepoch
  12. localtime
  13. utc

前面6個修飾符是對時間字元竄及其前面的修飾符處理後的時間結果進行增加或者減少。例如,對於YYYY-MM-DD格式的時間,當使用”±NNN months”修飾符時,則是對MM增加/減少相應的月數。

例子

當前日期
SELECT date(‘now’);

當月的最後一天
SELECT date(‘now’,‘start of month’,‘+1 month’,‘-1 day’);

將UNIX時間戳記轉化為時間日期格式
SELECT datetime(1092941466, ‘unixepoch’);

將UNIX時間戳記轉化為本地時間
SELECT datetime(1092941466, ‘unixepoch’, ‘localtime’);

當前日期的UNIX時間戳記格式
SELECT strftime(‘%s’,‘now’);

計算當天與美國獨立日之間的日期差(以天為單位)
SELECT julianday(‘now’) – julianday(’1776-07-04′);

計算任意時間至目前時間的時間差(以秒為單位)
SELECT strftime(‘%s’,‘now’) – strftime(‘%s’,’2004-01-01 02:34:56′);

將日期確定在本年度十月的條一個星期二
SELECT date(‘now’,‘start of year’,‘+9 months’,‘weekday 2′);


 

原文:http://blog.romebuilder.com/?p=96 

sqlite 日期型 字串轉為日期型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.