【问题标题】:A varchar conversion to a datetime typevarchar 转换为 datetime 类型
【发布时间】:2019-08-26 08:04:22
【问题描述】:

我想知道通过这种转换,我是否 100% 确定 my_date 列的时间将被正确转换,一般来说,整个日期在转换后看起来是正确的。

日期总是会从dd-mm-yyyy HH:mm:ss格式正确转换为yyyy-mm-dd HH:mm:ss格式?

这种情况下最好的转换是什么?

以下是所描述问题的示例:

DECLARE @tmp TABLE (my_date VARCHAR(20))

INSERT INTO @tmp VALUES ('25-02-2019 19:30:12')
INSERT INTO @tmp VALUES ('01-03-2019 09:30:11')
INSERT INTO @tmp VALUES ('22-02-2018 19:42:12')
INSERT INTO @tmp VALUES ('01-11-2019 19:30:17')

SELECT CONVERT (DATETIME, my_date, 105) FROM @tmp

【问题讨论】:

  • 105 是意大利 ('dd-MM-yyyy') 样式代码,所以如果这是您的 varcahr 的格式,是的,它始终有效。 Date and Time Styles
  • @Larnu 但是105没时间了
  • 我认为有人没有测试过,@KillerQueen。 :)
  • @Larnu 我测试了它并且它有效,但请阅读问题100% certaintythe best solution
  • 是的,因为这就是样式 105 的用途,日期格式为 yyyy-MM-dd。这就是文档告诉你的。如果您认为文档有误,那么 Stack Overflow 就不是这个地方,您应该在 mssql-docs github 上提出问题。

标签: sql sql-server type-conversion


【解决方案1】:
DECLARE @tmp TABLE (my_date VARCHAR(20))

INSERT INTO @tmp VALUES ('25-02-2019 19:30:12')
INSERT INTO @tmp VALUES ('01-03-2019 09:30:11')
INSERT INTO @tmp VALUES ('22-02-2018 19:42:12')
INSERT INTO @tmp VALUES ('01-11-2019 19:30:17')

SELECT CONVERT(NVARCHAR(20),CONVERT(DATETIME, my_date, 105),120) FROM @tmp

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2023-03-06
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多