在比较数据时,在mySql中更改日期格式时的结果不同

时间:2013-03-01 16:37:09

标签: mysql date view

这是一个与mysql相关的查询。我使用两个表创建了一个视图...表中的一个字段是“date”,没有任何默认值(即null或dd-mm-yyyy或其他任何东西)。现在,当我使用[2012-01-01'和'2012-03-31'之间的日期运行条件查询时,我得到的行数与我得到的行数不同[日期介于'2012-1-1之间'和'2012-3-31']。

使用“desc viewName”后我看到的另一个重要事项是它将该日期的默认值显示为'0000-00-00'。

如果查询如下,我将得到120行:

select * from billing_master where date(pay_date) between '2012-1-1' and'2013-1-1';

如果查询如下,我将获得45行:

select * from billing_master where date(pay_date) between '2012-01-01' and'2013-01-01';

有人对此有所了解吗?

此致 Sohil S。

1 个答案:

答案 0 :(得分:0)

假设您的pay_date字段的数据类型为DATE,

DATE_FORMAT(pay_date,'%Y-%m-%d')

如果它是VARCHAR等类型,你只是将它转换为DATE本身

DATE_FORMAT(DATE(pay_date),'%Y-%m-%d')

您的查询应如下所示:

SELECT * FROM billing_master  
WHERE DATE_FORMAT(DATE(pay_date),'%Y-%m-%d')  
BETWEEN '2012-01-01' AND '2013-01-01';