sql - 检查值是否为日期并将其转换

标签 sql sql-server sqldatetime

我收到某种格式的数据。日期为数字 (8,0)。例如20120101 = YYYYMMDD

该日期字段中存在具有诸如 (0,1,2,3,6) 之类的值的行,因此不是日期。

我想检查它是否是日期并将其转换,否则它可能为空。

现在以下代码可以工作,但我希望有更好的方法。

(CASE WHEN [invoice_date] LIKE '________' --There are 8 underscores
 THEN convert(datetime, cast([invoice_date] as char(8)))
 END) AS Invoice_Date

任何帮助将不胜感激。

最佳答案

使用 isdate 函数 像..

  (CASE WHEN ISDATE (invoice_date) = 1 
             THEN convert(datetime, cast([invoice_date] as char(8)))
             END) AS Invoice_Date

关于sql - 检查值是否为日期并将其转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353411/

相关文章:

sql - 将两个表从第一个日期开始连接到第二个日期范围内

wolfram-mathematica - 如何从Mathematica中的SQLDateTime对象提取日期

entity-framework - Entity Framework 和 SqlDateTime 溢出最佳实践

java - 字符串日期到java sql日期转换

php - 如果我使用CodeIgniter中的函数或类来生成表来存储我的用户信息,它是否安全或可能?

mysql - Select with count 的 SQL 结果

获取数据时 Java 与 SQL

mysql - 如何创建一个自动递增的字符串?

Sql - 如何搜索具有两个特定变量的不同行

sql-server - SSRS : How to repeat header row of a table on each page that is embedded in a LIST?