복붙노트

[SQL] 2008 SQL Server의 SS : 00 : MM : 어떻게 HH의 정수 (시간)을 변환하는?

SQL

2008 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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    4.이것은 작동합니다 :

    이것은 작동합니다 :

    DECLARE @MS INT = 235216
    select cast(dateadd(ms, @MS, '00:00:00') AS TIME(3))
    

    (밀리 초 단지 숫자가 아니라 중에 timeformat입니다)

  5. ==============================

    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 <- 분 시간

  6. 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