繁体   English   中英

日期范围不返回结果的MySQL查询

[英]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

我假设usernamevarchar类型, datetimestampdatetime类型。

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

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

确保:

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

正如Fahim所说,您的代码是正确的。 可能是表格中的某些内容导致了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM