[英]MySQL query with date ranges returning no results
因此,我正在从PHP进行此查询,在这里列出了确切的查询字符串:
SELECT * FROM `pdem_timesheet`.`tblMasterTimesheets` WHERE
`pdem_timesheet`.`tblMasterTimesheets`.`username` = 'pdem' AND
`pdem_timesheet`.`tblMasterTimesheets`.`date` >= '2012-05-09' AND
`pdem_timesheet`.`tblMasterTimesheets`.`date` <= '2012-05-15' ORDER BY
`pdem_timesheet`.`tblMasterTimesheets`.`date` ASC
看起来对我来说应该是正确的(或多或少从我以前使用过的确实能正常工作的代码中复制出来)。 但是当我运行查询时,结果为空。
如果我将查询更改为不是日期范围,而是将日期更改为一天:
SELECT * FROM .... WHERE ...`date` = '2012-06-12' ....
它工作正常,返回它应该的一个结果。
我试过使用之间的关键字:
SELECT * FROM ... WHERE ...`date` BETWEEN [start] [end]
但它仍然不返回任何内容...
任何想法如何获取此查询以返回结果?
===答案===
当你去:
var curr_date = now.getDate();
var curr_month = now.getMonth();
var curr_year = now.getFullYear();
它返回月份-出于某种原因1。 因此,如果现在的月份为6,则now.getMonth()将返回5 ...只需在查询中添加1(希望我能尽快看到这一点)
您的查询似乎对我有用。
我有的查询是
SELECT * FROM tblMasterTimesheets
WHERE
username='pdem'
AND
date >= '2012-05-09' AND
date <= '2012-05-15'
ORDER BY date ASC
我假设username
是varchar
类型, date
是timestamp
或datetime
类型。
与Fahim Parkar相似,这是使用BETWEEN语法的查询示例: http ://sqlfiddle.com/#!2/0fcb5/4
听起来您的用户pdem不存在。
确保:
DD-MM-YYYY
语法正确,并确保您知道哪个月是哪个数字(可能是05,6月是06) date
的数据类型是日期类型,而不是通用文本/ varchar类型。 您不能像这样将varchar与> =进行比较(至少不是您想要的方式。仅适用于日期类型) 正如Fahim所说,您的代码是正确的。 可能是表格中的某些内容导致了您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.