在資料倉庫中,我正在構建我從我們的一個來源中以數字 (17,9) 格式接收 DateTime 資料。SQL Server 中有沒有辦法將數字轉換為 DateTime 并同時保留時間資訊?例如,諸如 20210928.110424000 之類的日期應轉換為 2021-09-28 11:04:24:000。我可以將其轉換為 2021-09-28 00:00:00.000 但正如您所看到的,我缺少時間資訊。
uj5u.com熱心網友回復:
小事與STUFF()。您只需要關心時間部分... yyyymmdd 將轉換為日期。
例子
Declare @V numeric(17,9) = 20210928.110424000
Select try_convert(datetime,stuff(stuff(stuff(stuff(@V,16,0,'.'),14,0,':'),12,0,':'),9,1,' '))
結果
2021-09-28 11:04:24.000
uj5u.com熱心網友回復:
另一種方法substring是:
declare @date numeric(17,9) = 20210928.110424000
-- mask 2021-09-28 11:04:24.000 (121)
select
convert(datetime,
substring(convert(varchar(20),@date),1,4) '-'
substring(convert(varchar(20),@date),5,2) '-'
substring(convert(varchar(20),@date),7,2) ' '
substring(convert(varchar(20),@date),10,2) ':'
substring(convert(varchar(20),@date),12,2) ':'
substring(convert(varchar(20),@date),14,2) '.'
substring(convert(varchar(20),@date),16,3)
,121)
你可以在這個db<>fiddle上測驗
然而,在傳統的 BI 環境中,日期過去常常與日期/時間維度(使用數字代理鍵)相關聯,而不是日期/日期時間。此策略允許您對維度中的資料進行分組,其中對于給定的代理鍵(即 YYYYMMDD),您可以關聯任何其他屬性(年、季度、學期、月、周……)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/368718.html
標籤:sql sql-server 查询语句 约会时间
上一篇:R:未遵守邏輯條件
