我有一个start_date和end_date。我想要得到这两个日期之间的日期列表。有人能帮我指出我的查询中的错误吗?

select Date,TotalAllowance 
from Calculation 
where EmployeeId=1
  and Date between 2011/02/25 and 2011/02/27

这里Date是一个datetime变量。


当前回答

SELECT CITY, COUNT(EID) OCCURENCES FROM EMP 
WHERE DOB BETWEEN '31-JAN-1900' AND '31-JAN-2900' 
GROUP BY CITY 
HAVING COUNT(EID) > 2;

该查询将查找DOB位于员工指定时间范围内的次数超过2次的城市。

其他回答

select Date,TotalAllowance 
from Calculation 
where EmployeeId=1
  and convert(varchar(10),Date,111) between '2011/02/25' and '2011/02/27'

该查询适用于获取当前日期和接下来3个日期之间的值

SELECT * FROM tableName  WHERE columName 
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)

这最终将为当前日期增加额外3天的缓冲时间。

你应该把这两个日期放在单引号之间,比如..

select Date, TotalAllowance from Calculation where EmployeeId = 1
             and Date between '2011/02/25' and '2011/02/27'

或者可以使用

select Date, TotalAllowance from Calculation where EmployeeId = 1
             and Date >= '2011/02/25' and Date <= '2011/02/27'

请记住,第一次约会包含所有内容,但第二次约会就不包含所有内容,因为它实际上是“2011/02/27 00:00:00”。

实际上,为了得到最准确的结果,所有sql日期都应该是yyyy-MM-dd格式。

两件事:

使用引号 确保包括最后一天(结束于24) 选择日期,总津贴 从计算 EmployeeId = 1 and "2011/02/25" <= Date and Date <= "2011/02/27"

如果Date为DateTime。

我倾向于以这种方式进行范围检查,因为它清楚地显示了下限和上限。请记住,日期格式在不同的文化中有很大的不同。所以你可能要确保它被解释为一个日期。使用DATE_FORMAT(日期,'Y/m/d')。

(提示:使用STR_TO_DATE和DATE_FORMAT来切换范例。)