2016年9月13日 星期二

[研究] SQL Server 2016 的 datetime 最早可填入的日期測試

[研究] SQL Server 2016 的 datetime 最早可填入的日期測試

2016-09-13

SQL Server Management Studio (SSMS) 中測試


USE [TestDB]
GO

INSERT INTO [dbo].[TestTable]
           ([myname]
           ,[addr]
           ,[createtime])
     VALUES
           ('name1','addr1','1753-1-1');
GO

select * from TestTable;



0-1-1 插入後會變成 2000-01-01
1-1-1 插入後會變成 2001-01-01
1753-1-1 可以,1752-12-31 失敗

訊息 242,層級 16,狀態 3,行 4
將 varchar 資料類型轉換成 datetime 資料類型時,產生超出範圍的值。
陳述式已經結束。

********************************************************************************

後來發現有官方資料

日期和時間 (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms187819(v=sql.90).aspx
datetime日期範圍:1753 年 1 月 1 日到 9999 年 12 月 31 日
smalldatetime日期範圍:1900 年 1 月 1 日到 2079 年 6 月 6 日

datetime2 (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/bb677335(v=sql.120).aspx

日期範圍:0001-01-01 到 9999-12-31,西元 1 年 1 月 1 日到西元 9999 年 12 月 31 日

(完)

沒有留言:

張貼留言