仅在select语句中设置时间戳的时间

时间:2012-12-26 13:01:31

标签: php mysql sql timestamp

我有一个应用程序,用户可以在其中定义何时工作:例如从早上8点到下午5点。在我的MySQL数据库中,我有两个时间戳字段。我怎样才能设定时间,而不是日期?我需要这个,因为只有时间才是重要的。我只想知道用户何时何地工作。日期本身无关紧要。

我试过这样的事情,但是我的数据库拒绝了它:

0000-00-00 08:00:00

这是我的选择陈述:

# check if there is already an appointment, if yes, return it
select * 
from ios_appointments a join ios_workinghours h using(workerid_fk)
where workerid_fk = 1
AND h.start <= '08:30:00' AND h.end >= '10:00:00'
AND (
    a.start BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
    OR  a.end   BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
    OR (a.start < '2012-12-24 08:30:00' AND a.end > '2012-12-24 10:00:00')
)

4 个答案:

答案 0 :(得分:0)

使用CURTIME()在表格中插入当前时间。

  

将当前时间作为'HH:MM:SS'或HHMMSS.uuuuuu中的值返回   格式,取决于函数是用于字符串还是   数字上下文。该值以当前时区表示。

此外,您可以refer

答案 1 :(得分:0)

不确定这是否是您要求的但是您可以使用DATE_FORMAT

select * 
  from ios_appointments a join ios_workinghours h using(workerid_fk)
  where workerid_fk = 1
        AND DATE_FORMAT(h.start , '%H:%i:%s') <= '08:30:00' AND DATE_FORMAT(h.end , '%H:%i:%s') >= '10:00:00'
        AND (
          a.start BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
          OR  a.end   BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
          OR (a.start < '2012-12-24 08:30:00' AND a.end > '2012-12-24 10:00:00')
        )

答案 2 :(得分:0)

不要使用MySQL的TIMESTAMP数据类型;改为使用TIME

  

MySQL检索并显示TIME格式的'HH:MM:SS'值(或'HHH:MM:SS'格式的大小时值)。 TIME值的范围可以从'-838:59:59''838:59:59'。小时部分可能很大,因为TIME类型不仅可用于表示一天中的时间(必须小于24小时),还可用于表示两个事件之间的经过时间或时间间隔(可能远远超过24小时,甚至是负数。)

因此:

ALTER TABLE ios_workinghours
  MODIFY start TIME,
  MODIFY end   TIME

答案 3 :(得分:0)

试试这个会解决你的问题 -

select * 
from ios_appointments a join ios_workinghours h using(workerid_fk)
where workerid_fk = 1
AND date_format( h.start, "%h:%i:%s")  <= '08:30:00' AND date_format( h.end, "%h:%i:%s") >= '10:00:00'
AND (
    a.start BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
    OR  a.end   BETWEEN '2012-12-24 08:30:00'  AND  '2012-12-24 10:00:00'
    OR (a.start < '2012-12-24 08:30:00' AND a.end > '2012-12-24 10:00:00')
)