![](/img/trans.png)
[英]How to format time from dd:hh:mm:ss to only hh:mm:ss in SQL server?
[英]How to change the format of time for a specific column in SQL Server from hhmmss to hh:mm:ss
我的查詢獲取名為“ OBRGTM”的列的時間為“ 112532”。 我需要將此格式轉換為'11:25:32',我的意思是從hhmmss轉換為hh:mm:ss
如果您的SQL Server版本支持FORMAT
方法,則可以使用此方法。
測試DDL
CREATE TABLE T(
dt numeric
);
INSERT INTO T VALUES (112532);
INSERT INTO T VALUES (012532);
INSERT INTO T VALUES (012530);
詢問
SELECT FORMAT(dt,'0#:##:##')
FROM T
[結果] :
| |
|----------|
| 11:25:32 |
| 01:25:32 |
| 01:25:30 |
試試下面的代碼:
使用LEFT
函數刪除或消除最后一個小數點后的前0000000
SELECT LEFT(CONVERT(TIME,STUFF(STUFF(RIGHT(OBRGTM,6),5,0,':'),3,0,':')),8) as OBRGTM
去測試:
DECLARE @TimeString NUMERIC
SET @TimeString = 232320
SELECT LEFT(CONVERT(TIME,STUFF(STUFF(RIGHT(@TimeString,6),5,0,':'),3,0,':')),8)
如果是整數,則可以使用整數除法計算自午夜以來的秒數,並將其設置為可以輕松格式化的日期時間:
DECLARE @OBRGTM int = 123456;
SELECT DATEADD(second, @OBRGTM - 40*(@OBRGTM/100 + 60*(@OBRGTM/10000)), 0);
添加:
對於那些對此數學感興趣的人:
如果x
是由數字hhmmss
組成的整數,則讓我們使用整數除法並定義x' := x/100
和x" := x/10000
這樣, x'
將是整數hhmm
而x"
將為小時( hh
)。
現在,我們可以使用以下時間檢索時間hh:mm:ss的秒( ss
),分鍾( mm
)和小時( hh
)。
ss = x - 100*x'
mm = x' - 100*x"
hh = x"
總而言之,午夜之后的總秒數為
ss + 60*mm + 3600*hh
= x - 100*x' + 60*(x' - 100*x") + 3600*x"
= x - 100*x' + 60*x' - 6000*x" + 3600*x"
= x - 40*x' - 2400*x"
= x - 40*(x' + 60*x")
如果該值為字符串,則可以使用stuff()
生成正確格式的字符串:
select stuff(stuff(OBRGTM, 5, 0, ':'), 3, 0, ':')
您可以使用cast()
或convert()
為時間:
select convert(time, stuff(stuff(OBRGTM, 5, 0, ':'), 3, 0, ':'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.