【发布时间】:2016-09-19 12:38:43
【问题描述】:
我在数据库表中有一个 nvarchar2 列,它存储表示日期的字符串,例如“2016-12-05”。
有什么方法可以检测不包含有效日期字符串的行,例如'2012-19-34'?
我想要一个将任何无效日期字符串设置为 null 的语句。
【问题讨论】:
-
通过将它们存储为
date而不是varchar? -
请发布您到目前为止尝试过的内容;此外,您的列上是否有索引? “最好的”是什么意思?:最快,最易读,...?
-
“最好”的意思是迄今为止的“任何”。
-
添加@Siyual,例如,您是如何轻松检查 2 月 29 日的?您可以尝试逐个选择它们并使用
to_date。遇到异常的那些将是无效的。使用date开头将是最好的选择。 -
请参阅here,了解使用自定义日期验证器的巧妙解决方案。正如其他人所说,将日期存储为日期,并可能在您的应用层中处理检查。