0

私は、ユーザーがいつ作業しているかを定義できるアプリを持っています。たとえば、午前8時から午後5時までです。MySQL DBには、2つのタイムスタンプフィールドがあります。日付ではなく時刻のみを設定するにはどうすればよいですか?時間だけが重要なので、これが必要です。ユーザーがいつからいつ作業しているかを知りたいだけです。日付自体は関係ありません。

私はこのようなことを試みましたが、私のデータベースはそれを拒否します:

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

4 に答える 4

0

CURTIME()テーブルに現在の時刻を挿入するために使用します。

関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、現在の時刻を「HH:MM:SS」またはHHMMSS.uuuuuu形式の値として返します。値は現在のタイムゾーンで表されます。

さらに、あなたは参照することができます

于 2012-12-26T13:07:42.880 に答える
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')
        )
于 2012-12-26T13:14:41.850 に答える
0

TIMESTAMPMySQLのデータ型を使用しないでください。TIME代わりに使用してください:

TIMEMySQLは、値を取得して'HH:MM:SS'フォーマット(または'HHH:MM:SS'時間の長い値のフォーマット)で表示します。TIME値の範囲は'-838:59:59'から'838:59:59'です。時間の部分は非常に大きくなる可能性があります。これは、このTIMEタイプを使用して時刻(24時間未満である必要があります)だけでなく、経過時間または2つのイベント間の時間間隔(24時間をはるかに超える場合もある)を表すことができるためです。時間、または負の値)。

したがって:

ALTER TABLE ios_workinghours
  MODIFY start TIME,
  MODIFY end   TIME
于 2012-12-26T13:15:17.657 に答える
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')
)
于 2012-12-26T13:17:30.690 に答える