2017-02-16 70 views
2

我想UTC時間轉換爲PST時間,我能夠做到這一點。但我想將分鐘數值舍入爲'00:00:00'。如何將分鐘的時間值變成幾小時?

什麼,我已經寫了:

SELECT [TASK_NUMBER] 
    , dateadd(hour,datediff(hour,getdate(),dateadd(mi,30,START_TIME),START_TIME),getutcdate()) as START_TIME 
    , dateadd(hour,datediff(hour,getdate(),dateadd(mi,30,END_TIME),END_TIME),getutcdate()) as END_TIME 
    from table1 

輸入:

2017-02-01 12:44:15.160 || 2017-02-01 23:44:15.160 

2017-02-01 13:44:15.160 || 2017-02-03 02:44:15.160 

輸出:

2017-02-01 12:00:00 || 2017-02-01 23:00:00 

2017-02-01 13:00:00 || 2017-02-03 02:00:00 
+0

那是 未四捨五入而切斷,這裏是一個辦法:**選擇前100鑄造((鑄造(鑄造(START_TIME如日期)爲char(10))+ '' +鑄造(鑄造(START_TIME作爲時間)爲char(3) )+ '00:00' )的日期時間)從... ** – Avithohol

+0

我還是要UTC時間在同一個查詢轉換爲PST時間... HIW做呢 –

回答

1

一種選擇是格式()如果2012+

Select Format(START_TIME,'yyyy-MM-dd HH:00:00') 
     ,Format(END_TIME,'yyyy-MM-dd HH:00:00') 
From YourTable 

或者你可以使用一個簡單的轉換()

Select convert(varchar(13),START_TIME,121)+':00:00' 
     ,convert(varchar(13),END_TIME,121) +':00:00' 
From YourTable 

返回

2017-02-01 12:00:00 2017-02-01 23:00:00 
2017-02-01 13:00:00 2017-02-03 02:00:00 
+0

我仍然有時間從轉換UTC到PST,然後我需要四捨五入小時 –

+0

值的這些變化謝謝。我一直在尋找它更simpler..got正確的 –

+0

@Looking_for_answers對不起,我有我的頭開始/結束了已經轉換爲PST。我懷疑你只是嵌套dateadd()。如果您需要幫助,只是讓我知道我 –

1
CREATE TABLE tblTempTestTableStack 

(DataColumn1 DATETIME, DataColumn2 DATETIME) 

INSERT INTO tblTempTestTableStack 

SELECT SUBSTRING('2017-02-01 12:44:15.160 || 2017-02-01 23:44:15.160', 1, 23) 
      , SUBSTRING('2017-02-01 12:44:15.160 || 2017-02-01 23:44:15.160', 30, 23) 

UNION ALL 

SELECT SUBSTRING('2017-02-01 13:44:15.160 || 2017-02-03 02:44:15.160', 1, 23) 
      , SUBSTRING('2017-02-01 13:44:15.160 || 2017-02-03 02:44:15.160', 30, 23) 


SELECT CAST(CONVERT(DATE, DataColumn1) AS VARCHAR(10)) + ' ' + 
     RIGHT('00' + CAST(DATEPART(HH, DataColumn1) AS VARCHAR(2)), 2) + ':00:00' + ' || ' 
     + CAST(CONVERT(DATE, DataColumn2) AS VARCHAR(10)) + ' ' + 
     RIGHT('00' + CAST(DATEPART(HH, DataColumn2) AS VARCHAR(2)), 2) + ':00:00' 


FROM tblTempTestTableStack 
1

那不是四捨五入,但切斷,這裏是一個辦法:

select top 100 cast((cast(cast(START_TIME as date) as char(10)) + ' ' + cast(cast(START_TIME as time) as char(3)) + '00:00') as datetime) from tablename 
1
SELECT DATEADD(HOUR, 
    DATEPART(HOUR, START_TIME), 
    CAST(FLOOR(CAST(START_TIME AS FLOAT)) AS DATETIME)) 
FROM table1 
相關問題