我正在尝试在日期范围内搜索studentID。
我的数据库中只有一个日期,因此我只希望用户输入一个日期,而不是让他们输入开始日期和结束日期:
WHERE timeStamp BETWEEN startDate AND endDate
所以我正在尝试这个...
SELECT * FROM scansTable
INNER JOIN registeredUsers ON scansTable.studentID = registeredUsers.id
INNER JOIN labSession ON scansTable.labSessionID = labSession.id
INNER JOIN staffTable ON labSession.lecturer = staffTable.id
INNER JOIN unitTable ON labSession.unit = unitTable.id
WHERE studentID = '10'
AND labSession.StartTimeStamp BETWEEN '2011 -05 -30'+00:00:00
AND '2011 -05 -30'+23:59:59;
但是当我确定在数据库中有一个id为10的学生和那个日期范围时,它没有返回任何内容
我做的是+00:00:00错误吗?
感谢
答案 0 :(得分:4)
删除空格和加号:
BETWEEN '2011-05-30 00:00:00' AND '2011-05-30 23:59:59'
答案 1 :(得分:2)
如果您尚未更改默认日期格式,请删除+
标志和额外空格。
labSession.StartTimeStamp BETWEEN '2011-05-30 00:00:00' AND '2011-05-30 23:59:59';
另外,我不知道它是否是复制/粘贴的副产品,但MySQL甚至不会按原样运行查询。时间戳的时间部分必须在引号内。
答案 2 :(得分:2)
您似乎正在使用类似'2011 -05 -30'+00:00:00
的内容,您应该使用'2011-05-30 00:00:00'
(并对第二个条件进行相应的更改),因为TIMESTAMP
格式(我假设此字段位于这种格式)是YYYY-MM-DD HH:MM:SS
。
有帮助吗?如果没有,请使用表的定义加上示例行(至少两个timestamp列)。
修改强>
如果你想连接,你应该使用CONCAT()
函数(参见MySQL's documentation)。它看起来像这样:
CONCAT('2011-05-30',' 00:00:00')
或更有意义:
CONCAT_WS(' ','2011-05-30','00:00:00')
答案 3 :(得分:0)
之间可能不包含该下界为=
我相信它确实包含上限为=,这可能因数据库而异。