Sql-Server

以 hhmmssff 格式提取 Datetime2(7) 的時間部分

  • May 8, 2020

我需要以 hhmmssfff 格式提取 datetime2(7) 列的時間部分,我這樣做是這樣的:

DECLARE @mdate AS DATETIME2(7) 

SET @mdate = '2012-03-15 10:13:27.5437431'

SELECT LEFT(REPLACE(REPLACE(CONVERT(VARCHAR ,@mdate ,114),':',''),'.',''),9)

有沒有比做這個醜陋的替換/轉換/離開更好的方法?

我需要這個來加入一個 DimTime 維度,其鍵是 hhmmssfff 格式。

  1. 請不要使用varchar沒有長度
  2. 請使用分號作為語句終止符
  3. 我認為沒有更隱蔽的方法可以做到這一點。這是我的做法(短 14 個字元,忽略分號):
DECLARE @mdate AS DATETIME2(7);

SET @mdate = '2012-03-15 10:13:27.5437431';

SELECT REPLACE(REPLACE(CONVERT(TIME(3),@mdate),'.',''),':','');

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