2017-09-27 60 views
2

我試圖打印以VARCHAR格式打印今天的日期,但它打印的很好,但是當我試圖在int中打印相同的日期時,它顯示了43004.我知道我們可以「T打印日期整數格式,但什麼是這個數字的意義43004.SQL Server中的CONVERT函數用於Date函數的int數據類型

SELECT CONVERT(INT, GETDATE(), 110); 

輸出:43004

SELECT CONVERT(VARCHAR, GETDATE(), 110); 

輸出:2017年9月27日

在此先感謝。

+0

這是因爲'1900-01-01' – Lamak

+0

'選擇DATEADD(天,43004,「19000101」)的天數' – scsimon

+0

這是自1/1/1900天數的一天,你跑這個。 –

回答

0

你應該嘗試查看查詢的輸出

select cast(0 as datetime) 
, getdate(), 
cast(getdate() as int) 

輸出

01.01.1900 00:00:00  27.09.2017 16:09:25 43004 

所以0是允許的日期時間的最低值1.1.1900價值和每一天後它得到一個0之後的數字,因此1是02.01.1900 00:00:00

1

正如評論中所述,這是從1901-01-01開始的天數。

可以通過運行看到:

select dateadd(day,43004,'19000101') 

另一種方式來獲得相同的結果,就是:

select datediff(day,getdate(),0)

在上面的查詢,0 '1900-01-01'表示爲INT。您通常會看到類似的方法來查找當月的第一天。

select dateadd(month, datediff(month, 0, getdate()), 0) AS StartOfMonth 
相關問題