我知道有一个称为isdate()来验证日期时间列的函数,但它只适用于smalldatetime和datetime类型。 现在的问题是:有没有类似的方式来验证sql server 2008和2012中的新数据类型datetime2?是否有像datedate2这样的函数?
回答
在SQL Server 2012中,你可以使用TRY_CONVERT
:
SELECT TRY_CONVERT(DATETIME2, '2012-02-02 13:42:55.2323623'),
TRY_CONVERT(DATETIME2, '2012-02-31 13:42:55.2323623');
结果:
2012-02-02 13:42:55.2323623 NULL
或者TRY_PARSE
:(的结果相同)
SELECT TRY_PARSE('2012-02-02 13:42:55.2323623' AS DATETIME2),
TRY_PARSE('2012-02-31 13:42:55.2323623' AS DATETIME2);
对不起,我没有对你有一个聪明的答案< 2012年,你可以,我想,说
SELECT ISDATE(LEFT('2012-02-02 13:42:55.2323623', 23);
但是,感觉很脏。
TRY_CONVERT
documentation on MSDN
TRY_PARSE
documentation on MSDN
不错的一个................ –
聪明的答案!我很喜欢它!另一个关于sql server 2008中的datetime2的问题是,有没有办法在1753年1月1日之前检查有效日期?使用此命令将会导致无效日期SELECT ISDATE(LEFT('2012-02-02 13:42:55.2323623',23)); – Vladimir
@Vladimir对不起,我现在才注意到你的问题。这是学术还是你真的有日期<1753年? –
- 1. 在Delphi中是否有像PHP的vardump这样的函数?
- 2. jQuery JavaScript是否有像布尔型的parseInt这样的函数
- 3. 是否有像PHP的exit()这样的JavaScript函数?
- 4. Xcode中是否有像sleepWithTimeInterval()这样的函数?
- 5. 在MSMQ中是否有像JMS Topic这样的等价函数?
- 6. Swift在Ruby中是否有像`array.reject`这样的函数?
- 7. Lua中是否有像xrange这样的函数?
- 8. Elasticsearch:是否有像mongodb这样的函数findOne
- 9. 对于Hbase,在MySQL中是否有像EXPLAIN这样的函数?
- 10. 是否有像_compile_select或get_compiled_select()这样的函数?
- 11. 在gdb中是否有像`isfile`,`exists`或`-e`这样的函数?
- 12. 在jQuery中是否有像array_unique()这样的函数?
- 13. 是否有像PeekMessage这样的函数不处理消息?
- 14. 是否有像mysql_real_escape_string这样的VB6函数?
- 15. 是否有像这样的jQuery工具?
- 16. 是否有像java.awt.Polygon这样的codenameone类?
- 17. 在PHP中,是否有像stristr这样的函数,但是对于数组?
- 18. 是否有像sortWith函数一样的本地分组函数?
- 19. Python中是否存在像这样的模式匹配函数?
- 20. 是否有像流这样的数据结构,但是很弱?
- 21. 是否有像asctime_s()这样的函数可用于Windows中的SYSTEMTIME结构?
- 22. 是否有像'system'这样的不等待返回值的Perl函数?
- 23. 是否有像substringFromIndex这样的函数使用较少的内存?
- 24. 是否有像in_array这样的函数来检查PHP中的空值?
- 25. Swift是否有像Any或All这样的高阶函数短路?
- 26. Java库在C++中是否具有像std :: lower_bound(),std :: upper_bound()这样的函数?
- 27. 在Perl中是否有一些像zip和fold这样的函数?
- 28. 是否有可能在f#中编写像这样的递归分组函数?
- 29. 是否有一个库提供像LinqPad这样的格式化Dump()函数?
- 30. 是否有像“bcadd”这样的函数,除了它执行乘法?
严格地说ISDATE()不验证datetime列;它验证表达式是否可以解析为日期时间。它在一个专栏之后有点晚了! –
@MitchWheat这是一个很好的观点。似乎更可能验证(a)在varchar列中存储的日期不正确或(b)数据类型不正确的输入参数。 –
我想验证Excel表格中包含某些日期列的输入到临时表中。 – Vladimir