[SQL] 2008 SQL Server의 SS : 00 : MM : 어떻게 HH의 정수 (시간)을 변환하는?
SQL2008 SQL Server의 SS : 00 : MM : 어떻게 HH의 정수 (시간)을 변환하는?
MM : SS : 여기가 지금은 시간 형식 HH에 정수 값을 변환해야합니다, (데이터 타입은 정수) 한 번에 열이있는 테이블이 00 SQL Server 2008의.
또한 00 밀리 초를 나타내는 지 여부, 위의 시간 형식의 설명이 필요?
이에 도와주세요.
예 : 23,421,155 나타내는 23 : 42 : 11 : 55; 421,151 00 나타낸다 : 42 : 11 : 51
희망은 지금은 분명있다.
해결법
-
==============================
1.
declare @T int set @T = 10455836 --set @T = 421151 select (@T / 1000000) % 100 as hour, (@T / 10000) % 100 as minute, (@T / 100) % 100 as second, (@T % 100) * 10 as millisecond select dateadd(hour, (@T / 1000000) % 100, dateadd(minute, (@T / 10000) % 100, dateadd(second, (@T / 100) % 100, dateadd(millisecond, (@T % 100) * 10, cast('00:00:00' as time(2))))))
결과:
hour minute second millisecond ----------- ----------- ----------- ----------- 10 45 58 360 (1 row(s) affected) ---------------- 10:45:58.36 (1 row(s) affected)
-
==============================
2.문자열로 정수를 변환 한 다음 시간 문자열로 콜론에 삽입 할 물건 기능을 사용할 수 있습니다. 당신이 시간 데이터 형식으로 문자열을 변환 할 수 있음을 완료하면.
문자열로 정수를 변환 한 다음 시간 문자열로 콜론에 삽입 할 물건 기능을 사용할 수 있습니다. 당신이 시간 데이터 형식으로 문자열을 변환 할 수 있음을 완료하면.
SELECT CAST(STUFF(STUFF(STUFF(cast(23421155 as varchar),3,0,':'),6,0,':'),9,0,'.') AS TIME)
그건 미친에 아무것도하지 않고 시간으로 변환하는 가장 간단한 방법이어야한다.
귀하의 예제에서 당신은 또한 앞에 0이 아닌 int를했다. 이 경우 당신은 간단한은 이런 식으로 뭔가를 할 수 :
SELECT CAST(STUFF(STUFF(STUFF(RIGHT('00000000' + CAST(421151 AS VARCHAR),8),3,0,':'),6,0,':'),9,0,'.') AS TIME)
-
==============================
3.사용 내장 MSDB.DBO.AGENT_DATETIME (20150119,0)
사용 내장 MSDB.DBO.AGENT_DATETIME (20150119,0)
https://blog.sqlauthority.com/2015/03/13/sql-server-interesting-function-agent_datetime/
-
==============================
4.이것은 작동합니다 :
이것은 작동합니다 :
DECLARE @MS INT = 235216 select cast(dateadd(ms, @MS, '00:00:00') AS TIME(3))
(밀리 초 단지 숫자가 아니라 중에 timeformat입니다)
-
==============================
5.이 같은 SQL 내에서 다음과 같은 시간 변환을 사용할 수 있습니다 :
이 같은 SQL 내에서 다음과 같은 시간 변환을 사용할 수 있습니다 :
--Convert Time to Integer (Minutes) DECLARE @timeNow datetime = '14:47' SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108)) --Convert Minutes to Time DECLARE @intTime int = (SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108))) SELECT DATEADD(minute, @intTime, '')
결과: 887 <- 분에 시간과 1900-01-01 14 : 47 : 00.000 <- 분 시간
from https://stackoverflow.com/questions/12568408/how-to-convert-an-integer-time-to-hhmmss00-in-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 정규식 널 (null)을 허용 목록에서 n 번째 값을 선택합니다 (0) | 2020.04.08 |
---|---|
[SQL] PostgreSQL의 날짜 범위를 중복 찾기 (0) | 2020.04.08 |
[SQL] 피벗 2000 SQL Server를 사용하여 (0) | 2020.04.07 |
[SQL] 하나의 문 내에서의 MySQL의 자동 증가 값에 액세스 할 수 있습니까? (0) | 2020.04.07 |
[SQL] 하나의 레코드에 대한 제약은 기본값으로 표시 (0) | 2020.04.07 |