我试图获取一个字符串,确定它是日期(日期时间还是时间),然后使用SQL Server转换格式常量将其转换为相应的数据类型。但是,我对于127“ yyyy-mm-ddThh:mi:ss.mmmZ”遇到了很多麻烦,因为对于这样格式化的字符串,ISDATE返回false。
SELECT ISDATE('2018-07-21 15:14:00.5206914 -06:00') -- returns false
那是为什么?还有我不知道的sql server函数中的任何内置函数可以测试以查看这是否是有效的日期字符串?
答案 0 :(得分:4)
isdate
function接受某些日期(取决于日期格式和语言),但不接受JavaScript
。偏移量是示例末尾的datetimeoffset
部分。
您可以将try_convert
与样式120(-06:00
ODBC规范)一起使用:
yyyy-mm-dd hh:mi:ss(24h)
如果传递的表达式不是有效的SELECT TRY_CONVERT(datetimeoffset, '2018-07-21 15:14:00.5206914 -06:00', 120);
-->
2018-07-21 15:14:00.5206914 -06:00
,则try_convert
函数将返回null
。