[SQL SERVER]SQL2016-新資料物件

SQL2016這次提供三種新資料物件,能夠解決以往什麼樣的問題呢?

AT TIME ZONE

轉換輸入時區並提供目標時區時間偏差值。

有些企業於世界各地均有據點,所以可能使用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_BIG

以前版本透過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