SQL2016這次提供三種新資料物件,能夠解決以往什麼樣的問題呢?
轉換輸入時區並提供目標時區時間偏差值。
有些企業於世界各地均有據點,所以可能使用GMT(格林威治標準)時間,
其他據點可以透過該運算式取得目標時區偏差值,
相關各國時區錶則可透過sys.time_zone_info系統資料表(儲存於OS註冊機碼)查看。
select CONVERT(datetime,GETDATE())
AT TIME ZONE 'Taipei Standard Time' --台北標準時間
select CONVERT(datetime,GETDATE())
AT TIME ZONE 'Central European Standard Time' --中歐標準時間
select CONVERT(datetime, GETDATE())
AT TIME ZONE 'South Africa Standard Time' --南非標準時間
--各國時區表
select * from sys.time_zone_info
以前版本透過DATEDIFF函示取得指定時間差異,但因為回傳資料型別為int,
所以只要超過範圍(-2,147,483,648 到 +2,147,483,647)就會發生溢位錯誤。
SELECT
DATEDIFF(MILLISECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' ) ,
DATEDIFF(MICROSECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' ) ,
DATEDIFF(NANOSECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' )
返回BigInt足以應付真實世界
SELECT
DATEDIFF_BIG(MILLISECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' ) ,
DATEDIFF_BIG(MICROSECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' ) ,
DATEDIFF_BIG(NANOSECOND, '1900-01-01 10:01:01', '2100-01-01 10:01:01.123456' )
Enjoy SQL Server 2016