Tarih aralığına göre veritabanından öğeyi seçin

4 Cevap php

Ben olayların bir veritabanı var ve ben bir olay husul 'bugün' göstermek gerekiyor. Olaylar başlangıç ​​ve bitiş tarihleri ​​formatında adres: Ymd h: i: s

Bunu nasıl yaparım? Ben çizgisinde sorguları denedim:

SELECT * 
FROM tbl_events 
WHERE start>='2009-11-03 16:00:00' 
and end<='2009-11-03 16:00:00'

Boşuna. Herhangi bir tavsiye büyük mutluluk duyacağız!

4 Cevap

Eğer "datetime" yazın datetime dize çevrim denediniz mi?

SELECT 
    * 
FROM 
    tbl_events 
WHERE 
        start >= CAST('2009-11-03 16:00:00' AS DATETIME)
    AND end   <= CAST('2009-11-03 16:00:00' AS DATETIME)

Ya da, bu konuda, NOW() gibi bir işlevi ya da benzeri bir anahtar kelime kullanarak nesi var CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_DATE?

Xmaple için:

SELECT
    *
FROM
    tbl_events
WHERE
        start >= CURRENT_TIMESTAMP
    AND end   <= CURRENT_TIMESTAMP

EDIT: Andy-Puan ile bir şey üzerine olabilir operatörü ve ayrılmış kelimeler gibi bir şey arasında:

SELECT
    *
FROM
    tbl_events
WHERE
        CURRENT_TIMESTAMP BETWEEN `start` AND `end`

Sadece tarih değil zamanlarda önem veriyorsanız, bu 'bugün' için çalışacak

select * from tbl_events where start >= curdate() and end < curdate() + 1

Eğer tarih ve saatleri belirlemek istiyorsanız, bu iş olacak:

select * from tbl_events 
where start >= '2009-11-03 08:00:00' and end <= '2009-11-03 16:00:00'

Bu hassas saniyede bu günde meydana gelen olayları değil, seçmek istiyorum, tamam mı? Dolayısıyla WHERE fıkra daha start = '2009-11-03' gibi görünmelidir.

Şimdi işe yarayabilir nedeni, son bir kısıtlı kelime (ya da bu tür bir şey) olduğunu olabilir

mysql.com begin-end info page

ben çöp konuşuyor olabilir ama, umarım sorunu çözecektir, hangi event_start ve event_end olmak için veritabanı alan adlarını değiştirmek isteyebilirsiniz.

Hepsi de yardımcı olur Ayrıca eğer bir dizi tarihleri ​​almak için aşağıdaki yöntemi kullanabilirsiniz

SELECT * FROM tbl_event WHERE event_start BETWEEN (start_date) AND (end_date)

Bu sadece bu durumda event_start olarak, bir alanda bakar, ama demek ki siz yapabilirsiniz set aralığında bir başlangıç ​​tarihi olan olayların dizi olsun istiyorum.