如何更改varchar数据类型列的日期时间格式

Muh*_*mis 1 t-sql sql-server sql-server-2014

如何在SQL Server中更改varchar数据类型列的日期时间格式.
在此输入图像描述

列[Value]的数据类型是varchar.我无法将数据类型更改为datetime,因为此列也包含数值.此表正在按查询进行更新.我需要格式yyyy-mm-dd hh:mm:ss(24h).怎么样?

Joh*_*tti 5

您可以使用Try_Convert()在音乐会IsNull()

要清楚.结果仍然是一个字符串

Declare @YourTable table (Value varchar(50))
Insert Into @YourTable values
 ('268142')
,('Jan 1 1900 12:04PM')

Select *
     ,NewVal = IsNull(format(try_convert(datetime,Value),'yyyy-MM-dd HH:mm:ss'),Value)
 From  @YourTable
Run Code Online (Sandbox Code Playgroud)

返回

Value                NewVal
268142              268142
Jan 1 1900 12:04PM  1900-01-01 12:04:00
Run Code Online (Sandbox Code Playgroud)

编辑

不知道Format()是表演者,应该谨慎使用.另一种方法可能是

NewVal = IsNull(try_convert(varchar(50),try_convert(datetime,Value),120),Value)
Run Code Online (Sandbox Code Playgroud)