2013-10-31 55 views
0

我在我的SQL表以下日期SQL日期格式轉換從2013年4月1日00:00:00.000,以2013年4月1日12:00:00

2013-04-01 00:00:00.000 
2013-06-19 15:57:10.357 
2013-06-19 15:57:10.370 
2013-06-19 15:57:10.383 
2013-06-19 15:57:10.397 
2013-04-01 00:00:00.000 
2013-04-01 00:00:00.000 
2013-04-01 00:00:00.000 
2013-06-19 15:57:10.410 

我的問題是:

我如何使其2013-04-01 12:00:00的一個日期是2013-04-01 00:00:00.000

+0

加入12小時將其從午夜變成中午。 – PaulProgrammer

回答

0

除非你的源數據總是有午夜的時候(我懷疑,否則時間不會很重要),加入12小時可能導致不正確的日期。

您可以通過兩種不同的格式代碼化部做到這一點:

120 - ODBC規範 - yyyy-mm-dd hh:mi:ss(24小時)

109 - 默認+毫秒 - mon dd yyyy hh:mi:ss:mmmAM(或PM

SELECT CONVERT(char(10),@date,120) + SUBSTRING(CONVERT(char(20),@date,109),12,9) 
0

最簡單的方法是增加12小時。最簡單的方法是添加0.5:

select mydate + 0.5; 

您的示例代碼沒有意義。首先,它正在處理當前的日期值,而不是數據中的一列。此外,它在第一個參數上缺少一個長度。 總是在指定字符數據類型時包含長度

+0

這將無法正常工作,如果我有日期時間'2013-08-25 12:30:00.000'?它會添加另一個'.5'嗎?我不是在尋找那個,我只想要那個'2013-04-01 00:00:00.000' –

+0

@AbuHamzah。 。 。看來你還沒有明確指出你的問題。你能修改這個問題來澄清你的真正含義嗎? –

+0

我更新了我的問題,抱歉。 –

0

這裏有很多款式適合你

SELECT 

    GETDATE() AS GetDate, 
    CONVERT(VARCHAR,GETDATE(),0) AS '0', 
    CONVERT(VARCHAR,GETDATE(),100) AS '100', 
    CONVERT(VARCHAR,GETDATE(),1) AS '1', 
    CONVERT(VARCHAR,GETDATE(),101) AS '101', 
    CONVERT(VARCHAR,GETDATE(),7) AS '7', 
    CONVERT(VARCHAR,GETDATE(),107) AS '107', 
    CONVERT(VARCHAR,GETDATE(),108) AS '108', 
    CONVERT(VARCHAR,GETDATE(),108) AS '108', 
    CONVERT(VARCHAR,GETDATE(),10) AS '10', 
    CONVERT(VARCHAR,GETDATE(),110) AS '110', 
    CONVERT(VARCHAR,GETDATE(),12) AS '12', 
    CONVERT(VARCHAR,GETDATE(),112) AS '112', 
    CONVERT(VARCHAR,GETDATE(),14) AS '14', 
    CONVERT(VARCHAR,GETDATE(),114) AS '114' 
相關問題