當使用datetime類型在sql server 2008中存儲日期時間值時,它將以什麼格式存儲值?當在sql server(日期時間類型)中存儲日期時間時,它以什麼格式存儲它?
它是自1970年以來的秒數(或其他)?
在應用程序端(.net),我傳入一個日期時間對象。
當我在查詢分析器中查看錶格的行時,它會根據我的文化設置對其進行格式化還是我正在查看存儲在數據庫中的確切內容?
當使用datetime類型在sql server 2008中存儲日期時間值時,它將以什麼格式存儲值?當在sql server(日期時間類型)中存儲日期時間時,它以什麼格式存儲它?
它是自1970年以來的秒數(或其他)?
在應用程序端(.net),我傳入一個日期時間對象。
當我在查詢分析器中查看錶格的行時,它會根據我的文化設置對其進行格式化還是我正在查看存儲在數據庫中的確切內容?
內部,根據SQLDenis,它們被存儲爲兩個整數
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server
當你在你看到的評估號碼查詢分析器查看。
這是不存儲爲 「UNIX時間」
http://en.wikipedia.org/wiki/Unix_time
它存儲爲代表自1月1日天浮點,1900年如果你舍下來通過其鑄造爲int,即只留下日期部分:
select cast(cast(getdate() as int) as datetime)
-->
2011-07-12 00:00:00.000
或者,如果你添加了一些對此,這是增加了幾天。例如,添加0.5相當於添加12小時:
select getdate() + 0.5
-->
2011-07-12 11:22:09.927
詳見本MSDN article。
日期時間不包含格式信息;查詢分析器可以以任何喜歡的方式顯示它。它可能會嘗試尊重您的客戶端PC的區域設置。
DateTime doj = new DateTime();
System.Globalization.CultureInfo c1=new System.Globalization.CultureInfo("en-GB",true);
doj = DateTime.Parse(Txtdoj.Text.Trim(), c1, System.Globalization.DateTimeStyles.NoCurrentDateDefault);
使用 ..它
使用查詢,顯示日期時間 選擇轉換(varchar(max), doj,103)as doj from tbl_registration
以下是查看存儲方式的代碼:
DECLARE @now datetime, @bytenow binary(8)
SELECT @now = getdate()
SELECT @bytenow = convert(binary(8), @now)
SELECT @now AS fulldate, @bytenow AS internal,
convert(int, substring(@bytenow, 1, 4)) AS days,
convert(int, substring(@bytenow, 5, 8)) AS ticks
這顯示了2個值:
。
fulldate internal days ticks
----------------------- ------------------ ----------- -----------
2016-11-07 10:54:13.080 0x0000A6B700B3AFB4 42679 11775924
參考:Solving the Datetime Mystery看到圖3
那爲什麼要投票呢? –
不是一個答案,而是一般小費。以二進制格式進行投射將有助於診斷這種和其他人(unicode)的好奇心。選擇cast(getdate()爲二進制); –