在SQL

问题描述:

我想Julian日期转换为公历日期(MM/DD/YYYY)与正常日期比较朱利安日期,并将其与正常的日期比较:在SQL

WHERE CONVERT(VARCHAR, dbo.ConvertToGregDate(ExpDate), 101) < '04/01/2017' 

这将返回所有日期之前04/01直索年(例如,结果将不包括2016年4月2日或2016年5月1日)。

我应该在这里做什么不同吗?

+1

为什么你是否将日期转换为字符串以进行比较? – Siyual

+2

你正在比较字符,而不是日期 – Horaciux

+0

[坏习惯踢:声明VARCHAR没有(长度)](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick -declaring-varchar-without-length.aspx) - 你应该**总是**为你使用的任何'varchar'变量和参数提供一个长度 –

问题是你正在比较字符串。如果你是那样做的,比你应该使用可以比这样的日期格式:

where convert(varchar(8), dbo.converttogregdate(ExpDate), 112) < '20170401' 

或者更好的是,不要将您的结果转换为字符串都:

where dbo.converttogregdate(ExpDate) < '20170401' 
+0

谢谢!它很棒! – Kuma