代码之家  ›  专栏  ›  技术社区  ›  Sathiya Kumar V M

SQL Server 2012-convert(varchar,'2018-12-16 17:33:29',105)+''convert(varchar,'2018-12-16 17:33:29',108)未显示正确的数据

  •  0
  • Sathiya Kumar V M  · 技术社区  · 6 年前

    我有一个 datetime 数据格式为“16-12-2018 17:33:29”(dd-mm-yyyy hh:mm:ss)的数据类型列。因此,如果我得到的输入数据是2018-12-16 17:33:29,数据需要转换为“16-12-2018 17:33:29”。

    这是我一直在尝试的数据类型转换,

    SELECT 
        CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 105) + ' ' +
        CONVERT(VARCHAR(10), '2018-12-16 17:33:29', 108)
    

    输出为: 2018-12-16 2018-12-16

    但是如果我使用 Getdate() 我得到的不是硬编码值,而是预期的数据格式:

    SELECT 
        CONVERT(VARCHAR(10), GETDATE(), 105) + ' '  + 
        CONVERT(VARCHAR(10), GETDATE(), 108)
    

    输出为: 16-12-2018 17:36:18

    我的问题是,如果我们使用 getdate() 但不是以硬编码的价值观?

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Hans Kesting    6 年前

    第二个查询将日期值作为第二个参数。第一个查询只有一个字符串。
    就SQL而言,字符串看起来像日期这一事实并不重要。

    编辑 . 如果列具有日期时间类型,则使用日期时间值传输数据。尽量避免接触字符串。