我在存储日期的Varchar字段上使用了TRY_CAST(我知道这是不好的作法,但我无能为力)。
将值12/05/2018 04:30输出为2018-12-05 04:30:00.000,这是不正确的,因为在英国这里12/05/2018是5月12日,但是TRY_CAST输出12月5日的值。
TRY_CAST不会返回29/05/2018 07:00(5月29日)的任何值,因为我认为它认为它不存在29个月的第5个月。
,TRY_CAST([Time decision made for caesarean section].VALUE as datetime)
AS DECISION_FOR_CAESAREAN_SECTION_DATE_TIME
上面的字段是我要输出的内容
下面是原始存储值中的一些样本数据,所有这些都是英国(五月)日期。
22/05/2018 07:30
12/05/2018 04:30
22/05/2018 00:51
16/05/2018 10:08
21/05/2018 13:03
17/05/2018 11:53
21/05/2018 14:22
29/05/2018 07:00
将这些值作为有效的英国日期时间输出的最佳方法是什么
答案 0 :(得分:3)
使用TRY_CONVERT,它提供TRY_CAST不提供的样式选项
SELECT
TRY_CONVERT(datetime, '12/05/2018 04:30', 103),
TRY_CONVERT(datetime, '22/05/2018 07:30', 103),
TRY_CONVERT(datetime, 'gbn', 103)
样式103仅影响日期部分。
或者,您可以先使用SET DATEFORMAT dmy
SET DATEFORMAT dmy
SELECT
TRY_CAST('12/05/2018 04:30'AS datetime),
TRY_CAST('22/05/2018 07:30'AS datetime),
TRY_CAST('gbn'AS datetime);