[英]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.