日期比较不起作用(日期是字符串) - MySQL

时间:2014-02-04 00:13:17

标签: mysql sql date

我的MySQL查询内容为:

select sum(AmtPd) as HCSA from HC062017 where CostCenter = '8718' and ServiceDate > '08/31/2013'

已经使用了几个月没有问题。今天我遇到了一个无法正常工作的问题。 ServiceDate是一个var(10),包含从报告中提取的日期。格式为mm-dd-yyyy。似乎正在发生的事情是,如果ServiceDate是在2013年(其中一些仍然是),那么该声明完美无缺。但是,当ServiceDate在2014年时,未选择任何记录。如果我不使用ServiceDate参数,我会得到所需的结果(因为这次所有记录都超过了2013年8月31日的日期)。也许我幸运的是'09','10'等等,在'08'之后下降。我尝试过使用str_to_date而没有运气

select sum(AmtPd) as HCSA from HC062017 where CostCenter = '8718' and str_to_date(ServiceDate, '%m, %d, %Y') > '08-31-2013';.  

有关如何处理此事的任何建议吗?

2 个答案:

答案 0 :(得分:2)

您需要将两者转换为通用格式:

str_to_date(ServiceDate, '%m-%d-%Y') > str_to_date('08-31-2013', '%m-%d-%Y')

像你一样比较字符串是一个坏主意。字符串按字母顺序进行比较,因此'08 -31-2013'比'09 -30-2010'“更小”,因为9比之前的其他所有8。您可以使用ISO格式YYYY-MM-DD比较日期。

答案 1 :(得分:1)

STR_TO_DATE以YYYY-MM-DD格式生成日期。因此,您要比较的日期必须采用相同的格式:

str_to_date(ServiceDate, '%m, %d, %Y') > '2013-08-31';