我目前正在为我的MCSA数据平台学习,我得到了以下错误的问题,我正在寻找一个解释,为什么我的答案是错误的,因为测试解释没有多大意义。
您有一个名为AuditTrail的表,用于跟踪对其他表中数据的修改。 AuditTrail表由许多进程更新。输入AuditTrail的数据可能包含格式不正确的日期时间值。您实现了一个从各个列检索数据的进程,但有时当进程无法将数据转换为有效的日期时间值时,进程会引发错误。 您需要使用en-US格式文化代码将数据转换为有效的日期时间值。如果转换失败,则必须在en-US格式文化代码中返回空值。如果转换失败,则必须在列输出中返回空值,并且转换过程不得抛出错误。
选项包括TRY_PARSE
函数与TRY_CONVERT
函数。
我选择TRY_PARSE
,但正确的答案是TRY_CONVERT
。
任何人都可以澄清为什么TRY_PARSE
在这个例子中不是一个有效的选择,因为我不想在将来犯这个错误
答案 0 :(得分:0)
TRY_PARSE
和TRY_CONVERT
之间的主要区别之一是TRY_PARSE
接受带有USING
子句的区域性。尽管措辞欠佳,并且在假设中有很多内容,但这个问题似乎暗示着输入和系统文化是相同的。
因此,在这种情况下,TRY_CONVERT
将是两个调用中的一个,因为默认区域性被假定为“ en-US”。
如果您需要从字符串中解析法语日期,则选择必须为TRY_PARSE
,因为它允许您指定区域性。
TRY_PARSE ('mars 18 2018' AS DATETIME USING 'fr-FR')
来源: https://docs.microsoft.com/en-us/sql/t-sql/functions/try-parse-transact-sql?view=sql-server-2017