【问题标题】:converting varchar to datetime in sql在sql中将varchar转换为日期时间
【发布时间】:2019-08-15 07:55:51
【问题描述】:

目前在我的数据库中

20181015 151706 ---------- varchar(15)
2018-10-15 15:17:06 000--- Datetime

如何将其从 varchar 转换为 datetime ?

我已经尝试使用下面的这个命令

SELECT CONVERT(Datetime,CREATE_TIME , 120) from TABLE

但我遇到错误

“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。”

SELECT CONVERT(Datetime,CREATE_TIME , 120) from TABLE

【问题讨论】:

  • 如果日期类似于 20181010 151706 会起作用吗?如果可行,那是因为日期格式(YYYYMMDD 与 YYYYDDMM)。
  • 你的 dbms 是什么?为什么将 varchar 保存为日期时间值?
  • 这是 sql server 2012

标签: sql sql-server datetime varchar


【解决方案1】:

你的特殊20181015 151706varcharDateTime值导致的错误,

您可以尝试使用substring 函数生成日期时间格式字符串值,然后执行convert

SELECT CONVERT(DATETIME,CONCAT(substring(col, 1, 4),'-',substring(col, 5, 2),'-',substring(col, 7, 2),' ',substring(col, 9, 2),':',substring(col, 11, 2),':',substring(col, 13, 2)))
FROM (
   select REPLACE('20181015 151706',' ','') col
) t1

sqlfiddle

【讨论】:

    【解决方案2】:

    您的日期字符串有一点问题。当 20181015 151706 更改为日期部分 20181015 时,它可以工作。

    SELECT CONVERT(DATETIME, col)
    FROM (
       select '20181015' col
    ) t1
    

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多