SQL Server转换为日期失败,DateTime有效



我有一个带有varchar(25)列的表,该列具有日期值。典型的价值是'11/04/2017'。

此查询返回0行

select * 
from myTable  
where isdate(inputDate) = 0

我正在尝试使用日期排序来找到最大值。

此查询返回预期结果

;with gooddates as 
(
    select 
        medcomfolder, PatientId, PatientBirthday, InputDate 
    from 
        myTable 
    where 
        isdate(inputDate) = 1
)
select max(convert(datetime, inputDate)) 
from gooddates

此查询返回错误。

;with gooddates as 
(
     select 
         medcomfolder, PatientId, PatientBirthday, InputDate 
     from 
         dwhFuData   
     where 
         isdate(inputdate) = 1
)
select max(convert(date, inputdate)) 
from gooddates

这是返回的错误

msg 241,第16级,状态1,第274行
转换日期和/或从字符字符串转换时间

时失败

两个查询之间的区别在于,当后者转换为日期时,第一个是转换为日期时间的。

在这一点上,我可以通过DateTime选项前进,但是我想知道我缺少什么。

我检查了没有嵌入式空间,所有列都有len(InputDate) = 10(不包括时间数据(

我选择了不同的值,将它们放在Excel中,并在每行中执行一个日期函数。我希望在1行上获得 #value 。所有的行都起作用。

因此,没有什么比'02/31/2019'发生的愚蠢了。

当简单的日期转换不转换时,日期时间转换如何通过?

我的猜测是您的值包括日期之后的时间戳(基于isdate()始终为零的事实(。

如果是这样,一个简单的解决方案将是使用convert(date, left(inputdate, 10))。另一个解决方案使用try_convert()

try_convert(date, inputdate)

找到有问题的值:

select inputdate
from dwhFuData
where try_convert(date, inputdate) is null and inputdate is not null;

最新更新