0

这是一个与mysql相关的查询。我使用两个表创建了一个视图...表中的一个字段是“日期”,没有任何默认值(即 null 或 dd-mm-yyyy 或其他任何值)。现在,当我使用 [ date between '2012-01-01' and '2012-03-31' ] 运行条件查询时,我得到的行数与使用 [ date between '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.

4

1 回答 1

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';
于 2013-03-01T19:21:34.573 回答