如何使用Varchar(10)格式mm / dd / yyyy之间查询日期范围

时间:2013-06-04 20:22:24

标签: mysql date varchar between

我试图仅显示“DateDue”在去年内的记录。问题是我的日期是Varchar(10)的格式,因为我的数据源是从供应商那里进入我的数据库的。显然,使用此查询未正确过滤日期。是否可以将此(为了比较日期范围而暂时)转换为在查询中使用的正确日期数据类型,但不能永久更改该列的类型?

SELECT `DocNum`, `DateDue` 
FROM `prod_po_list` 
WHERE `DateDue` BETWEEN (DATE_FORMAT(curdate( ) - INTERVAL 365 DAY , '%m/%d/%Y' ))
AND DATE_FORMAT( CURDATE( ) , '%m/%d/%Y' )

2 个答案:

答案 0 :(得分:5)

你在找这样的东西吗?

 SELECT DocNum, DateDue 
 FROM prod_po_list
 WHERE STR_TO_DATE(DateDue, '%m/%d/%Y')
       BETWEEN DATE_SUB(CURDATE(), INTERVAL 365 DAY)
       AND CURDATE()

答案 1 :(得分:0)

如果您在日期列上有索引,这将有所帮助

SELECT DocNum, DateDue 
 FROM prod_po_list
 WHERE DateDue >= DATE_SUB(CURDATE(), INTERVAL 365 DAY)
       AND DateDue <= CURDATE()