2

データベースに日付と時刻の列が 2 つあります。日付が現在の日付と現在の時刻以上の行を取得したい

以下のクエリを使用して結果を取得しました

SELECT DISTINCT     
A.appt_fromUser,A.date,A.time,A.appt_styleType,B.*,A.appt_shoutID,A.shout_status 
from appoint_db A 
INNER JOIN checkedin_db B ON A.appt_id=B.appid 
where A.appt_toUser='$userid' 
and A.date>='$date' 
and InChair='0' 
and A.time>='$time'

しかし、これは私が望んでいたように機能していません。

たとえば、2 つの行がある場合:

2012/05/30 時間:6.00
2012/05/30 時間:13.00

そして、これを 2012/05/02 の日付と Time:12:00 で照会すると、時刻が 12:00 より大きい行のみが返されます

4

2 に答える 2

1

日付がチェック対象の日付と同じ場合にのみ、時間をチェックする必要があります。

SELECT DISTINCT     
A.appt_fromUser,A.date,A.time,A.appt_styleType,B.*,A.appt_shoutID,A.shout_status
from appoint_db A
INNER JOIN checkedin_db B ON A.appt_id=B.appid 
where A.appt_toUser='$userid'
and   InChair='0'
and (
       A.date>'$date'
       OR (
           A.date = '$date'
           AND
           A.time>='$time'
       )
    )

選択する前に日付と時刻を連結することもできます。私はしません (一部のロケールでは動作しない可能性があります)。

SELECT DISTINCT
A.appt_fromUser,A.date,A.time,A.appt_styleType,B.*,A.appt_shoutID,A.shout_status
from appoint_db A
INNER JOIN checkedin_db B ON A.appt_id=B.appid
where A.appt_toUser=1
and InChair='0'
AND CONCAT(A.date, ' ', A.time) >= '$date $time'
于 2012-05-02T14:29:33.563 に答える
0

mysql の now() 関数は、現在のタイムスタンプを返します。あなたはそれを使うことができます

于 2012-05-02T12:45:51.713 に答える