2015-07-05 81 views
1

今天,我寫了一篇關於Datepart()兩個查詢,並得到如下的SQL Server DATEPART()函數

查詢#1不同的回報:

Select Datepart(day,'2015-07-05') 

返回 '5',這是我的預期。

查詢#2:

Select Datepart(day, 2015-07-05) 

返回 '27',這是一個有點好笑,我不明白是如何被返回27。

這兩個查詢之間的區別是''內有日期,另一個沒有。

有人能幫助我嗎?

回答

5
2015-07-05

僅僅是一個數學表達式,其加起來整數2003(從2015中減去7給出2008然後減去5)

2003的計算結果爲'1905-06-27'時隱含轉換成日期時間作爲鑄造intdatetime的工作原理相同作爲將該天數添加到1900年1月1日的基準日期(即等於DATEADD(DAY, 2003,'19000101'))。

所以這是27來自哪裏。

表示在SQL Server日期文字正確的方法是作爲一個字符串'2015-07-05'(ISO格式 - 明確了新的日期時間datetypes)或'20150705'(明確的對於傳統數據類型)或使用ODBC format{ d '2015-07-05' }