sql date format从2013-04-01 00:00:00.000转换为2013-04-01 12:00:00

时间:2013-10-31 19:11:37

标签: sql sql-server-2008

我的sql表中有以下日期

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

的{{1}}

4 个答案:

答案 0 :(得分:0)

最简单的方法是增加12小时。最简单的方法是添加0.5:

select mydate + 0.5;

您的示例代码实际上没有意义。首先,它正在处理当前日期值,而不是数据中的列。此外,它在第一个参数上缺少长度。 始终在指定字符数据类型时包含长度。

答案 1 :(得分:0)

select CONVERT(varchar(30),getdate(),100)

答案 2 :(得分:0)

除非您的源数据总是有午夜时间(我怀疑,否则时间不重要),添加12小时可能会导致错误的日期。

您可以通过从两种不同的格式代码中获取部分来实现:

120 - ODBC规范 - yyyy-mm-dd hh:mi:ss(24h)

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

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

答案 3 :(得分: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'
相关问题