2013-10-31 53 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' 
相关问题