DATETIME2(3)
ฉันได้ทำโดยใช้
อย่างที่คุณเห็นในแบบสอบถามด้านล่างมันมีมากขึ้นeconomic
:
declare @dt1 datetime2(3)
declare @dt2 datetime2
SELECT @DT1 = SYSDATETIME()
SELECT @DT2= SYSDATETIME()
SELECT [THE LENGTH OF DATETIME2]=DATALENGTH(@DT2)
,[THE LENGTH OF DATETIME2(3)]=DATALENGTH(@DT1)
ความแตกต่างระหว่างdatetime
และdatetime2
มีการอธิบายอย่างดีที่นี่
สำหรับแบบฝึกหัดนี้ฉันสร้างตารางชั่วคราวสำหรับการทดสอบและเติมด้วย 999 แตกต่างrandom dates
จาก01-jan-2019
และวันนี้ ( 23-july-2019
)
จากนั้นตามลำดับฉันจะตั้งค่ามิลลิวินาทีจาก 1 ถึง 999
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOEXEC OFF
IF OBJECT_ID ('TEMPDB..#T1') IS NOT NULL
DROP TABLE #T1
CREATE TABLE #t1(the_date DATETIME2(3) NOT NULL PRIMARY KEY CLUSTERED )
GO
-- run this 999 times - hopefully there will be no duplicates
-- SELECT 204*24*60*60 - today is 23-july-2019 - the 203rd day of the year
DECLARE @DT DATETIME2(3)
SELECT @DT = CONVERT(DATETIME2(3),
DATEADD(SECOND, ABS(CHECKSUM(NEWID()) % 17625600),
'2019-01-01'),120)
--SELECT @DT
IF NOT EXISTS( SELECT 1 FROM #T1 WHERE THE_DATE = @DT)
INSERT INTO #T1 VALUES (@DT)
GO 999
--check it out what we have
SELECT * FROM #T1
--get the date and the new date
SELECT
THE_DATE
,THE_NEW_DATE= DATEADD(MILLISECOND, ROW_NUMBER() OVER (ORDER BY THE_DATE), THE_DATE )
FROM #T1
และนี่คือสิ่งที่ฉันได้รับ: (ดูบางส่วน)