0

我以这种格式(00:00:00)将时间存储在考勤表中。现在我需要找到存储在 09:00:00 之前的登录数据。

我正在使用此查询来查找数据。

SELECT user_name, 
       time_in 
  FROM attendance 
 WHERE user_name='Vignesh' 
  AND  time_in < 09:20:59

这件事对我不起作用。有没有其他方法可以从数据库中获取 09:00:00 之前的数据?

4

3 回答 3

6

您需要将其括在引号中:

AND  time_in < '09:20:59'
               ^--------^--- single quote char

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html

MySQL 可以识别以下格式的TIME值:

  • 作为'D HH:MM:SS'格式的字符串。您还可以使用以下“宽松”语法之一:'HH:MM:SS', 'HH:MM', 'D HH:MM', 'D HH', 或'SS'. 这里D代表天,可以有一个从 0 到 34 的值。

  • 作为'HHMMSS'格式中没有分隔符的字符串,前提是它作为时间有意义。例如,'101112'被理解为'10:11:12',但是'109712'是非法的(它有一个无意义的微小部分)并且变成'00:00:00'

  • 作为HHMMSS格式中的数字,前提是它作为时间有意义。例如,101112被理解为'10:11:12'。还可以理解以下替代格式:SSMMSSHHMMSS

于 2012-12-17T12:55:00.747 回答
2

尝试这样做

    SELECT user_name, 
   time_in 
   FROM attendance 
 WHERE user_name='Vignesh' 
  AND  time_in < '09:20:59'

编辑 :

或者你也可以使用这个

        SELECT user_name,time_in
   FROM attendance 
   WHERE user_name='Vignesh' 
    AND startTime < TIME_FORMAT("00:00:00","%H:%i:%s") 
     AND endTime > TIME_FORMAT("05:00:00","%H:%i:%s")
于 2012-12-17T12:56:56.600 回答
1

您可以使用以下语法获取两个日期之间的数据,

“2011/02/25”和“2011/02/27”之间的日期

对上述使用日期时间..它会工作....(时间戳)

或者像下面这样使用,

SELECT id FROM Parts WHERE (Time < EndTime) AND (Time > BeginTime) ORDER BY Time; 
于 2012-12-17T12:55:17.990 回答