2010-11-17 33 views
2

是旧的日期时间转换黑洞:的SQL Server:比较日期字符串没有前导零

tbl_a.dob (varchar) = "1/1/1980" 
tbl_b.dob (datetime) = 01/01/1980 00:00:00 

这不起作用:

select * 
from tbl_a, tbl_b 
where tbl_a.dob = convert(varchar, dob, 101) 

因为风格101增加了租赁零到datetime ! “01/01/1980”

+0

如果您发布的代码或XML,** **请在高亮文本编辑器的线和编辑器工具栏上的“代码”按钮(101 010)点击很好的格式和语法高亮显示! – 2010-11-17 16:11:18

+1

您将日期时间转换为varchar,然后进行字符串比较。更好的方法是将字符串转换为日期时间,然后比较两个日期时间值。将苹果与苹果进行比较,而不是将苹果与从橘子转换而来的梨进行比较。 – 2010-11-17 16:16:31

回答

5

您应该能够走相反的方向,将varchar转换为日期时间。

select * 
    from tbl_a a 
     inner join tbl_b b 
      on cast(a.dob as datetime) = b.dob