MySQL TimeStamp查询

时间:2011-05-31 19:39:43

标签: mysql

我正在尝试在日期范围内搜索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错误吗?

感谢

4 个答案:

答案 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)

之间可能不包含该下界为=

我相信它确实包含上限为=,这可能因数据库而异。