【发布时间】:2014-09-11 13:17:31
【问题描述】:
尝试使用 CURDATE() 过滤过去 30 天,但它只是返回一个 NULL 行。
查询:
SELECT
vcrs.vcrDate AS DATE,
vcrs.jobNumber AS RO_NUM,
vhcrows.description AS DESC,
vhcrows.partNumber AS PART_NUM,
vhcrows.unitPrice AS UNIT_PRICE,
vhcrows.partQuantity AS QUANTITY,
FROM vhcrows
INNER JOIN vcrs ON vhcrows.vcr_id = vcrs.uid
INNER JOIN usergroup_manufacturers ON usergroup_manufacturers.usergroup_id = usergroups.uid
WHERE usergroup_manufacturers.manufacturer_id = 7
AND vcrs.vcrDate BETWEEN DATE_FORMAT((CURDATE()),'%Y%m%d') AND DATE_FORMAT((CURDATE() - INTERVAL 30 DAY),'%Y%m%d')
AND vcrs.vcrStatus <> '-1'
AND vcrs.vcrSubStatus = 4
AND vhcrows.rowType IN (1,2);
它应该返回如下内容:
DATE RO_NUM DESC UNIT_PRICE QUANTITY
20140805 36815 BALL JOINT 24.85 1
20140821 11763 BALL JOINT 31.4 1
20140806 12076 BOLT 4.44 2
20140806 12076 BOLT 4.44 2
20140828 37994 DEF WIPER 9.53 3
20140804 11536 DRIVE MEMBER 106.42 1
20140804 11536 DRIVESHAFT 280.78 1
20140805 36815 NUT 1.33 1
20140813 56817 RADIO WITH CD PLAYER 1399.88 1
20140820 203102 REF. 16.7 1
20140801 11517 TENSIONER 64.01 1
20140814 12203 WHEEL BEARING 162.13 1
20140807 51520 WIPER 9.53 3
20140821 198081 "RANGE" 22.77 1
但是,正如我所说,我只是得到 NULL。
谢谢!
* vcrs.vcrDate 存储为例如20140911 *
【问题讨论】:
-
你看到 (CURDATE()),'%Y%m%d') 返回什么或者它是否为空?
-
SELECT DATE_FORMAT((CURDATE()),'%Y%m%d');返回 20140911
-
curDate的格式是什么?它应该是一个日期。 -
数据库中的日期采用 YYYYMMDD 格式,因此我使用 DATE_FORMAT 将 CURDATE() 与数据库格式匹配。否则返回 YYYY-MM-DD
-
如果您使用手动输入的日期范围 IE BETWEEN '20140911' AND '20140811' 进行测试会发生什么? - 如果它也出错了,请尝试在“2014-09-11”和“2014-08-11”之间添加“-”IE(您可能必须以相同的方式格式化vcrDate)
标签: mysql date null where between