6

2 つ以上のエントリが必要であるが、テーブルに今日と明日の日付が含まれている必要があるレコードを選択したいと考えています。日付をテーブルに日付形式で保存しています。

SELECT `availibility`.* 
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date between CURDATE() 
AND DATE_ADD(CURDATE(),INTERVAL 1 DAY))

上記のクエリを使用していますが、これは 1 つの日付 (今日または明日) が存在する場合でも当てはまります。たとえば、両方の日付が必要なレコードを取得したい

+---------+----------------+------------+
|   ID    |   property_id  |  Date      |
+---------+----------------+------------+
| 369516  | 8818           | 2013-01-19 |
| 369517  | 8818           | 2013-01-18 |
| 369518  | 8818           | 2013-01-17 |
| 418021  | 8818           | 2013-08-27 |
| 418022  | 8818           | 2013-08-28 |
| 418022  | 8818           | 2013-08-29 |
| 418022  | 2001           | 2013-07-29 |
| 418022  | 2001           |2013-07-30  |
+---------+----------------+------------+

両方の日付がここに存在するため、8818 プロパティはレコード セットに含まれる必要があります

4

4 に答える 4

2

以下を使用できます。

NOW() + INTERVAL 1 DAY

日付と時刻ではなく、日付のみに関心がある場合は、NOW の代わりに CURDATE を使用できます。

CURDATE() + INTERVAL 1 DAY

あなたのクエリは

SELECT `availibility`.* 
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date between CURDATE() 
AND CURDATE() + INTERVAL 1 DAY // change here 
于 2013-08-28T10:47:22.850 に答える
1

JOIN を使用して、2 番目のレコードが存在することを確認します。

SELECT `availibility`.* 
FROM `availibility`
JOIN `availibility` AS availibility_tomorrow ON availibility_tomorrow.property_id =     availibility.property_id AND availibility_tomorrow.unavailibility_date = DATE_ADD(CURDATE    (),INTERVAL 1 DAY))
WHERE `property_id`= 8818 AND availibility.unavailibility_date = CURDATE()
于 2013-08-28T10:49:49.953 に答える
0

この良さがわかれば…

SELECT `property_id`, count(*) as no
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date=CURDATE() 
OR availibility.unavailibility_date=DATE_ADD(CURDATE(),INTERVAL 1 DAY))
having no =2
于 2013-08-28T10:49:27.443 に答える