这是一个与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。
答案 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';