Sql-Server

如何將 1 毫秒添加到日期時間字元串?

  • July 26, 2019

基於一個選擇,我可以像這樣返回 x 行:

1   2019-07-23 10:14:04.000
1   2019-07-23 10:14:11.000
2   2019-07-23 10:45:32.000
1   2019-07-23 10:45:33.000

我們所有的毫秒都為 0。

有沒有辦法將 1 x 1 毫秒相加,所以選擇看起來像這樣:

1   2019-07-23 10:14:04.001
1   2019-07-23 10:14:11.002
2   2019-07-23 10:45:32.003
1   2019-07-23 10:45:33.004

我正在嘗試創建游標甚至更新但沒有成功。

這是獲得我想要的結果的查詢:

 select top 10 ModifiedOn 
   from [SCHEMA].[dbo].[TABLE]
 where FIELD between '2019-07-23 00:00' and '2019-07-23 23:59'

有 81k 個值。場是DATETIME

Datetime不精確到 1 毫秒的水平。datetime2除非您更改為不同的數據類型(即),否則您所要求的內容是不可能的。

文件

重要報價:

精度四捨五入到 0.000、0.003 或 0.007 秒的增量

DateAdd功能是您正在尋找的。

用作millisecond函式的第一個參數,告訴它您正在添加毫秒。然後1用作第二個參數,表示要添加的毫秒數。

這是一個範例,將目前時間抓取到一個變數中,然後對其添加一毫秒並將結果保存為第二個變數,然後列印每個變數

Declare @RightNow as DateTime2
Declare @RightNowPlusAMillisecond as DateTime2

Select @RightNow = Getdate()
Select @RightNowPlusAMillisecond = DateAdd(millisecond,1,@RightNow)

Print @RightNow
Print @RightNowPlusAMillisecond

結果:

2019-07-23 08:25:38.3500000
2019-07-23 08:25:38.3510000

筆記:

正如 Forrest 在另一個答案中指出的那樣,datetime數據類型不保證毫秒精度。它以 0.000、0.003 或 0.007 秒的增量四捨五入。如果您想要毫秒精度,請使用datetime2.

引用自:https://dba.stackexchange.com/questions/243534