Sql 如何将表中的每一列转换为日期时间?星期一、日、年、时、时
我正在尝试将表中的每一列从Sql 如何将表中的每一列转换为日期时间?星期一、日、年、时、时,sql,sql-server,date,datetime,Sql,Sql Server,Date,Datetime,我正在尝试将表中的每一列从mon-dd-yyyy-hh:mmAM更新为Datetime(yyy-mm-dd-hh:mm:ss.mmm)。我写了一个脚本,它会影响列,但似乎没有列得到更新 UPDATE ParadataDetail SET Value = Convert(datetime, Value, 120) WHERE MetaDataId = 29 如果出于某种原因这是不可能的,并且您确实(我的意思是)必须在varchar列中保留datetime值,并且您需要更改datetime值的字符
mon-dd-yyyy-hh:mmAM
更新为Datetime(yyy-mm-dd-hh:mm:ss.mmm
)。我写了一个脚本,它会影响列,但似乎没有列得到更新
UPDATE ParadataDetail
SET Value = Convert(datetime, Value, 120)
WHERE MetaDataId = 29
如果出于某种原因这是不可能的,并且您确实(我的意思是)必须在varchar列中保留datetime值,并且您需要更改datetime值的字符串表示形式,您可以使用双重转换:
UPDATE ParadataDetail
SET Value = Convert(varchar(2048), Convert(datetime, Value, 100), 120)
WHERE MetaDataId = 29
如果sql server版本为2012或更高版本,则最好使用Try\u convert:
UPDATE ParadataDetail
SET Value = Convert(varchar(2048), Try_Convert(datetime, Value, 100), 120)
WHERE MetaDataId = 29
这会将无法转换为datetime的所有值设置为null。如果由于某种原因无法转换,并且您确实(我的意思是)必须将datetime值保留在varchar列中,并且您需要更改datetime值的字符串表示形式,则可以使用双重转换:
UPDATE ParadataDetail
SET Value = Convert(varchar(2048), Convert(datetime, Value, 100), 120)
WHERE MetaDataId = 29
如果sql server版本为2012或更高版本,则最好使用Try\u convert:
UPDATE ParadataDetail
SET Value = Convert(varchar(2048), Try_Convert(datetime, Value, 100), 120)
WHERE MetaDataId = 29
这会将所有无法转换为datetime的值设置为null。为什么要在DB?MySQL或SQL Server中更新日期?并不是每个软件产品的名字上都有“SQL”是一样的。从代码上看,我已经删除了不相关的MySql标签。
Value
列的数据类型是什么?因此,如果Value
列的数据类型是DateTime
,则您的查询没有意义。请阅读Aaron Bertrand的。不要在varchar列中保留日期值。将数据类型更改为DateTime。为什么要在DB?MySQL或SQL Server中更新日期?并不是每个软件产品的名字上都有“SQL”是一样的。从代码上看,我已经删除了不相关的MySql标签。Value
列的数据类型是什么?因此,如果Value
列的数据类型是DateTime
,则您的查询没有意义。请阅读Aaron Bertrand的。不要在varchar列中保留日期值。将数据类型更改为DateTime。我知道这是一个可怕的事情,这是一个通用的工作系统。不过,这非常有效,谢谢。我知道这是一个可怕的事情,这是一个通用的工作系统。不过,这非常有效,谢谢。