Inu*_*s C 11 sql sql-server sqldatetime
我在用 20120101 = YYYYMMDD
我以某种格式接收数据.日期是数字(8,0)
例如(0,1,2,3,6)
存在具有20120101 = YYYYMMDD
该日期字段中的值的行,因此不是日期.
我想检查它是否是日期并转换它,否则它可以为null.
现在以下代码可以正常工作,但我希望有更好的方法.
(CASE WHEN [invoice_date] LIKE '________' --There are 8 underscores
THEN convert(datetime, cast([invoice_date] as char(8)))
END) AS Invoice_Date
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
Den*_*del 22
使用isdate函数如..
(CASE WHEN ISDATE (invoice_date) = 1
THEN convert(datetime, cast([invoice_date] as char(8)))
END) AS Invoice_Date
Run Code Online (Sandbox Code Playgroud)
您可以使用ISDATE函数,但是对非日期值怎么办?在我建议的解决方案中,您可以选择返回null:
select
(case
when ISDATE (invoice_date)=1
then convert(datetime, invoice_date)
else null end) AS Invoice_Date
from your_table
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52654 次 |
最近记录: |