標籤:
Sql Server使用 Date表示日期,time表示時間,使用datetime和datetime2表示日期和時間。
1,秒的精度是指使用多少位小數表示1s:
DateTime資料類型秒的精度是3,DateTime2和Time可以控制秒的精度,
文法是DateTime2(n)和time(n),n的取值範圍是0-7,預設值是7。
2,DateTime資料類型 儲存日期和時間,需要8個位元組的固定儲存空間,預設的資料格式是yyyy-MM-dd hh:mm:ss.xxx,表示從1753年1月1日到9999年12月31日的日期和時間資料,精確度為3.33毫秒或0.00333秒,即可以表示的日期範圍從公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精確到3.33毫秒。
Microsoft SQL Server 用兩個 4 位元組的整數內部儲存 datetime 資料類型的值。第一個 4 位元組儲存 base date (即 1900 年 1 月 1 日)之前或之後的天數。基礎日期是系統參考日期。不允許早於 1753 年 1 月 1 日的 datetime 值。第一個4 位元組:1900 年1 月1 日當日為0 ;之前的日期是負數,之後日期是正數。另外一個 4 位元組儲存以10/3 毫秒數所代表的每天的時間。
declare @dt datetime
使用GetDate()和GetUTCDate()為DateTime類型的變數賦值,這兩個函數傳回值的類型是DateTime
declare @dt datetimeset @dt=getdate()
3,DateTime2資料類型 儲存日期和時間,需要的儲存空間不固定。根據儲存的時間部分 fractional seconds precision來確定DateTime2的Storage Size,6 bytes for precisions less than 3; 7 bytes for precisions 3 and 4. All other precisions require 8 bytes.
DateTime2可以表示比DateTime更精確的時間,預設的資料格式是yyyy-MM-dd hh:mm:ss.nnnnnnn,DateTime2 秒預設的精度是7,即用7位小數表示一秒的精度。
DateTime2的文法是
datetime2 [ (fractional seconds precision) ]
下面兩種聲明變數的方式是等價的。
declare @dt2 datetime2(7)declare @dt2 datetime2
為DateTime2類型的變數賦值,需要使用SysDateTime()和SysUTCDateTime(),這兩個函數傳回值的類型是DateTime2
declare @dt2 datetime2set @dt2=SYSDATETIME()
4,Date資料類型 只儲存日期,不儲存時間,需要3B的儲存空間,預設的資料格式是yyyy-MM-dd,支援的日期範圍從0001-01-01到9999-12-31
可以使用日期文字,getdate()函數和sysdatetime()函數為Date類型的變數賦值
declare @d dateset @d=‘2015-07-02‘set @d=getdate()set @d=SYSDATETIME()
5,Time資料類型 只儲存時間,不儲存日期,需要5B的儲存空間.
Time預設的fractional second precision是7,預設的資料格式是hh:mm:ss.nnnnnnn。
Time資料類型的文法
time [ (fractional second precision) ]
推薦使用時間字串和sysdatetime()函數為Time類型的變數賦值。不推薦使用GetDate()函數,GetDate()函數返回的是DateTime類型,時間部分的fractional second precision沒有time類型高,如果對時間的precision要求高,請使用時間字串和sysdatetime()函數為Time類型的變數賦值。
--declare @t time(7)DECLARE @t timeset @t=‘13:48:43.2840467‘set @t=SYSDATETIME()--not recommendset @t=GETDATE()
6,A simple example
declare @dt2 datetime2declare @d datedeclare @t time--GetDate(),GetUTCDate() 傳回值的資料類型是DateTime--SysDateTime(),SysUTCDate() 傳回值的資料類型是DateTime2select @dt=getdate(), @dt2=sysdatetime(), @d = convert(nvarchar(8),getdate(),112), @t=‘13:48:43.2840467‘select @dt as dt,@dt2 as dt2,@d as d, @t as t
sql server date,datetime,datetime2 和 time 簡單介紹