这看起来是一个简单的解决方案,但我似乎无法弄清楚为什么对我不起作用。我有一个包含如下数据的列:
DateField
----------
12/16/2016
11/06/2016
我想做的就是将
varchar
转换为date
列,但是我遇到了以下错误:从字符字符串转换日期和/或时间时转换失败。
这是我的简单查询:
select convert (date, DateField) as convertedField
from myTable
这看起来是一个简单的解决方案,但我似乎无法弄清楚为什么对我不起作用。我有一个包含如下数据的列:
DateField
----------
12/16/2016
11/06/2016
varchar
转换为date
列,但是我遇到了以下错误:从字符字符串转换日期和/或时间时转换失败。
这是我的简单查询:
select convert (date, DateField) as convertedField
from myTable
你提供的两个示例没有问题。你的表中有一些无法转换为日期的错误日期。
对于错误的日期,请使用TRY_CONVERT
函数,它将返回NULL
select TRY_Convert(date,DateField)
From myTable
您应该始终将日期存储在DATE/DATETIME
数据类型中。
如果您想查看无法转换为日期的记录,则
select DateField
From myTable
Where TRY_Convert(date,DateField) IS NULL
mm/dd/yyyy
,您可以在 Convert()
函数中指定它,如下所示。CONVERT(DATETIME,DATAFIELD,101)
TRY_CONVERT()
来获取抛出此异常的行:SELECT *
FROM TBL
WHERE TRY_CONVERT(DATETIME, DATAFIELD, 101) IS NULL
这将返回无法转换的行。
如果转换失败,TRY_CONVERT()
将返回 NULL
。
在此处了解更多关于 DateTime 格式的信息: SQL Server CONVERT() 函数教程
在格式化时,您需要指定日期时间的格式。您表格中的日期目前是以美国格式表示的,因此您应该在转换函数中传递第三个参数101。
SELECT CONVERT(date,[DateField],101) FROM myTable;
这里是可运行的Fiddle http://rextester.com/NYKR49788
关于日期时间格式的更多信息,请参见https://msdn.microsoft.com/en-us/library/ms187928.aspx
101
来指定格式为美国日期格式。 - Aatish Sai
SQL SERVER
? - Pரதீப்