在SQL中使用convert函式進行日期的查詢

2021-06-15 20:22:54 字數 1445 閱讀 9070

曾經遇到這樣的情況,在資料庫的meeting表中有publishtime (datetime,8)字段,用來儲存乙個開會時間,在存入時由於要指明開會具體時間,故格式為yyyy-mm-dd hh:mm:ss,而我們查詢時是通過yyyy-mm-dd來進行的,即查詢某一天的所有會議資訊,這樣如果通過select * from meeting where publishtime=@publishtime (引數@publishtime為yyyy-mm-dd格式)語句進行查詢將無法得到正確結果,比如我們要查詢2023年12月1日的會議資訊,在輸入2004-12-01時就不能得到查詢結果,而這種查詢又不能要求輸入具體的hh:mm:ss.

此時我們需要使用convert函式,它可以將一種資料型別的表示式轉換為另一種資料型別的表示式.此處我們先將資料庫內的datetime型別轉換為char型別,由於輸入的引數是10位的,所以寫成

select * from meeting where convert(varchar(10),publishtime,121))=@publishtime,這樣在查詢時資料庫得到引數後先自動將資料庫內的資訊轉換為yyyy-mm-dd格式的10位字元,只要與引數相同即可返回查詢結果.而convert中的121是指將datetime型別轉換為char型別時獲得包括世紀位數的4位年份

不帶世紀數字(yy) 帶世紀數字(yyyy) 標準 輸入/輸出**

- 0 或 100 (*) 預設值 mon dd yyyy hh:miam(或 pm)

1 101 美國 mm/dd/yyyy

2 102 ansi yy.mm.dd

3 103 英國/法國 dd/mm/yy

4 104 德國 dd.mm.yy

5 105 義大利 dd-mm-yy

6 106 - dd mon yy

7 107 - mon dd, yy

8 108 - hh:mm:ss

- 9 或 109 (*) 預設值 + 毫秒 mon dd yyyy hh:mi:ss:mmmam(或 pm)

10 110 美國 mm-dd-yy

11 111 日本 yy/mm/dd

12 112 iso yymmdd

- 13 或 113 (*) 歐洲預設值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)

14 114 - hh:mi:ss:mmm(24h)

- 20 或 120 (*) odbc 規範 yyyy-mm-dd hh:mm:ss[.fff]

- 21 或 121 (*) odbc 規範(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff]

- 126(***) iso8601 yyyy-mm-dd thh:mm:ss:mmm(不含空格)

- 130* 科威特 dd mon yyyy hh:mi:ss:mmmam

- 131* 科威特 dd/mm/yy hh:mi:ss:mmmam 

在SQL中使用convert函式進行日期的查詢

現在資料庫users表中有這個joindate欄位,datetime型別 有幾個資料比如2005 07 30 2005 07 20 然後查詢joindate欄位 select from users where joindate like 2005 可以正常顯示 可是當查詢 select from u...

在SQL中使用convert函式進行日期的查詢

曾經遇到這樣的情況,在的meeting表中有publishtime datetime,8 字段,用來儲存乙個開會時間,在存入時由於要指明開會具體時間,故格式為yyyy mm ddhh mm ss,而我們 查詢時是通過yyyy mm dd來進行的,即 查詢某一天的所有會議資訊,這樣如果通過select...

在SQL中使用convert函式進行日期的查詢

曾經遇到這樣的情況 在資料庫的 meeting 表中有publishtime datetime,8 字段,用來儲存乙個開會時間 在存入時由於要指明開會具體時間 故格式為 yyyy mm dd hh mm ss,而我們查詢時是通過 yyyy mm dd 來進行的 即查詢某一天的所有會議資訊 這樣如果通...