【问题标题】:Time part is missing when using convert使用转换时缺少时间部分
【发布时间】:2016-05-02 07:00:47
【问题描述】:

我在这样的列中有一个日期 (2016-06-01 21:50:00.000) - YYYY-MM-DD HH:MM:SS

我正在尝试将其转换为这样的 --> (01/06/2016 21:50:00.000) DD-MM-YYYY HH:MM:SS

我尝试了以下方法;

SELECT CONVERT(VARCHAR(30), CONVERT(DATETIME, MYDATECOLUMN, 101), 103)
FROM MYTABLE

缺少时间部分

谁能建议如何实现这一点?

我无权更改表格中的数据

【问题讨论】:

    标签: sql sql-server tsql datetime


    【解决方案1】:

    试试下面的代码

    select CONVERT(VARCHAR(10), MYDATECOLUMN, 103) + ' '  + convert(VARCHAR(8), MYDATECOLUMN, 14) 
    FROM MYTABLE
    

    如果您想显示毫秒,则在第二部分将 varchar 大小从 8 更改为 12

      select CONVERT(VARCHAR(10), MYDATECOLUMN, 103) + ' '  + convert(VARCHAR(12), MYDATECOLUMN, 14) 
       FROM MYTABLE
    

    【讨论】:

    • 第二部分的 VARCHAR 的大小应该是 12。 8 是不够的。
    • @ChathurangaRanasinghe ya..if 毫秒需要显示它应该是 12
    • @Sachu:谢谢Sachu
    • @shan 很高兴它有帮助。
    【解决方案2】:

    您可以使用103 获取日期部分,然后使用CAST date_column 到TIME 获取时间部分。

    查询

    SELECT CONVERT(VARCHAR(25), GETDATE(), 103) +
           ' ' + CAST(CAST(GETDATE() AS TIME) AS VARCHAR(20));
    

    结果

    02/05/2016 12:43:05.9930000
    

    或者如果你想去掉毫秒部分,

    查询

    SELECT CONVERT(VARCHAR(25), GETDATE(), 103) + 
           ' ' + CONVERT(VARCHAR(8), GETDATE(), 108);
    

    结果

    02/05/2016 12:43:30
    

    【讨论】:

      【解决方案3】:

      试试这个

      SELECT CONVERT(VARCHAR(10), Cast(MYDATECOLUMN as date), 103) +
         ' ' + CONVERT(VARCHAR(12),  Cast(MYDATECOLUMN as time),  113);
      

      【讨论】:

        猜你喜欢
        • 2020-10-13
        • 2020-01-04
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多