2013-01-03 46 views
0

我如何爲特定時間指定當前日期?如何將當前日期與特定時間分配給列?

比方說8:00:00 AM到列EXIT_DT數據類型datetime ??

我試過GETDATE() AS EXIT_DT,但它給了我當前的日期時間。我正在使用Sql server 2005.任何幫助?

可以說今天是1/3/2013,我希望我的結果返回值爲1/3/2013 8:00:00 AM的日期時間數據類型。如果我運行ytd語句,結果將是1/2/2013 8:00:00 AM

回答

6

這個公式總是會產生08:00的一天,它被調用,避免字符串操作:

select DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00') 

儘量避免轉換爲與字符串的解決方案 - 治療datetime值作爲字符串是一個錯誤的最大來源。

它通過計算天數(作爲一個整數)自1月1日起已經過2001年,然後補充說,同樣的天數,以08:00 1日2001年1月

+0

感謝它的工作 – 10e5x

+0

其他答案也可以工作,但urs真的很短,很甜。聰明! – 10e5x

0

使用與getdate()一起轉換以獲取特定格式。

例如:

SELECT CONVERT(VARCHAR(30),GETDATE(),113) 
+0

我試過這個沒有達到我想要的。我想要的數據類型datetime的結果不是varchar(30)。還有什麼幫助? – 10e5x

+0

SELECT CONVERT(datetime,CONVERT(VARCHAR(30),GETDATE(),113)) –

0

這是一個有點愚蠢的,但它的工作原理

select cast(cast(getdate() as date) as datetime) + '08:00:00' 

它施放getdate()date從而失去小時,比它轉換到datetime,並增加了8個小時。

如果你想避免datetimevarchar隱式轉換,你可以使用這個版本:

select cast(cast(getdate() as date) as datetime) 
    + convert(datetime,'08:00:00',114) 
0

這也是工作。 (1)。將今天的日期轉換爲ISO format (yyyymmdd)(2)。加上時間,(3)。轉換回日期時間

Select convert(datetime, convert(varchar, getdate(),112) + ' ' + '8:00:00AM') 
--Results 
2013-01-03 08:00:00.000 

如果您需要特定格式,則需要再次轉換回varchar。

0
-- AM/PM -- 
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI:SS AM') FROM dual 
/

-- 24 hrs format -- 
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH24:MI:SS') FROM dual 
/
相關問題