首页 > 解决方案 > 将字符串转换为日期时间适用于选择但也不更新(T-SQL)

问题描述

我的数据库中有一个表,其中包含原始用户输入的日期字符串,然后尝试使用 CONVERT 从中获取日期时间

CREATE TABLE #UserInput 
(
    actualDate DATETIME NULL,
    dateString VARCHAR(50) NULL
)

该声明

SELECT CONVERT(DATETIME, dateString) 
FROM #UserInput 

工作正常,并将字符串正确转换为日期时间。

但是,当我尝试设置actualDate列时,使用语句

UPDATE X 
SET X.actualDate = CONVERT(DATETIME, X.dateString) 
FROM #UserInput X 

我得到错误:

从字符串转换日期和/或时间时转换失败。

因为我可以运行选择,所以我知道所有的 dateString 格式都正确并且可以转换。那么为什么我不能通过更新来做到这一点呢?

我一直在测试的特定格式是 mm/dd/yyyy hh:mm,但该解决方案还需要处理其他格式。

感谢您对此的任何帮助,谢谢。

标签: sqlsql-server-2016sqldatetimesql-convert

解决方案


CREATE TABLE #UserInput (
actualDate datetime NULL,
dateString varchar(50) NULL)

insert #UserInput(dateString) values('20181231 12:15')

SELECT CONVERT(datetime, dateString) 
FROM #UserInput 

UPDATE X 
SET X.actualDate = CONVERT(datetime, X.dateString) 
FROM #UserInput X 

select * from #UserInput

我测试了两种格式 yyyymmdd hh:mm 和 mm/dd/yyyy hh:mm 此代码工作正常。我没有收到任何更新或选择运行错误。


推荐阅读