[英]Only set time of timestamp in select statement
我有一个应用程序,用户可以在其中定义工作时间:例如从上午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')
)
不知道这是否是您要的,但是您可以使用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')
)
试试这个可以解决您的问题-
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')
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.