簡體   English   中英

僅在select語句中設置時間戳記時間

[英]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')
)

使用CURTIME()在表中插入當前時間。

以'HH:MM:SS'或HHMMSS.uuuuuuu格式返回當前時間作為值,具體取決於該函數是在字符串還是數字上下文中使用。 該值以當前時區表示。

此外,您可以參考

不知道這是否是您要的,但是您可以使用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')
        )

不要使用MySQL的TIMESTAMP數據類型; 使用TIME代替:

MySQL檢索並以'HH:MM:SS'格式顯示TIME值(或對於大型小時值顯示為'HHH:MM:SS'格式)。 TIME值的范圍可以是'-838:59:59''838:59:59' 小時部分可能是如此之大,因為“ TIME類型不僅可以用來表示一天中的某個時間(必須少於24小時),而且可以用來表示經過的時間或兩個事件之間的時間間隔(可能遠大於24小時,甚至是負面的)。

因此:

ALTER TABLE ios_workinghours
  MODIFY start TIME,
  MODIFY end   TIME

試試這個可以解決您的問題-

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM