簡體   English   中英

如何將SQL Server中特定列的時間格式從hhmmss更改為hh:mm:ss

[英]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 |

SQLFIDDLE

試試下面的代碼:

使用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/100x" := x/10000這樣, x'將是整數hhmmx"將為小時( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM