1

所以我从 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' ....

它工作得很好,返回它应该的一个结果。

我试过使用 between 关键字:

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(希望我能早点看到这个)

4

3 回答 3

2

您的查询似乎对我有用。

演示

我的查询是

SELECT * FROM tblMasterTimesheets
WHERE 
username='pdem'
AND
date >= '2012-05-09' AND
date <= '2012-05-15'
ORDER BY date ASC

我假设,username是类型varchar并且date是类型timestampdatetime

于 2012-06-18T18:10:02.960 回答
2

与 Fahim Parkar 类似,这里有一个使用 BETWEEN 语法的查询示例:http ://sqlfiddle.com/#!2/0fcb5/4

听起来您的用户 pdem 不存在。

于 2012-06-18T18:12:37.073 回答
1

确保:

  1. 实际上,在使用您给定的标准时应该返回一个结果。确保DD-MM-YYYY语法正确并确保您知道哪个月份是哪个数字(可能是 05,六月是 06)
  2. 该列的数据类型date是日期类型,而不是通用文本/varchar 类型。您不能像这样将 varchar 与 >= 进行比较(至少不是您想要的方式。仅适用于日期类型)

正如 Fahim 所说,您的代码是正确的。它一定是表中的某些东西导致了您的问题。

于 2012-06-18T18:11:08.677 回答