2010-01-25 17 views
5

Bunu MySQL'de nasıl yapabilirim? MySQL - SELECT date date <X

SELECT * FROM MyTable WHERE MyDateCol < TODAY() 

Ben konuyla ilgili bir çok googled ve gerçekten kolayca yeterince yukarıda açıklamıyor "MySQL tarih ref bakmak" dışında bir şey bulamadık.

ben tür dolaylı olduğunu aşağıdakileri yapabilirsiniz biliyorum:

SELECT * FROM MyTable WHERE MyDateCol BETWEEN (0000-00-00) AND TODAY() 

cevap

4

MySQL, size bugün tarihinin alınacağına curdate() funciton var.

Yani, böyle bir şey yapmalıdır:

select * 
from your_table 
where your_date_column < curdate() 


bu işlevin kılavuzun sayfasını alıntı:

'YYYY-MM-DD' veya YYYYMMDD formatında bir değer olarak geçerli tarih döndürür, İşlev, bir dize veya sayısal bağlamda kullanılan olup olmamasına bağlı olarak. Bir değeri olarak geçerli tarih ve saatini döndürür

: Geçerli zaman (ve sadece gün) karşılaştırmak istiyorsanız


Ve, now() işlevini kullanabilirsiniz 'YYYY-MM-DD HH:MM:SS' veya YYYYMMDDHHMMSS.uuuuuu formatında

+0

, 2010-Mar-27 20100327 olacak yoksa ben şu anda deneyebilirsiniz hangi bir sunucu yok 2,040 –

+1

ondalık katma değer olurdu, ama kılavuzu dikkate YYYYMMDD diyor ki, 20100327 alacağınızı sanıyorum, ve ek bir sonucun sonucu yok - ki bu da çalışmak zor olurdu. –

+0

Bunu yerel MySQL sunucumla doğruladım, 20100327 gibi sayıları kullanır, bu da karşılaştırma yapmayı gerçekten kolaylaştırır. Dize tarihini, sayısal karşılaştırma için kullanmak üzere doğrudan bir sayıya atayabilirsiniz .. '" 2010-03-27 "=>" 20100327 "=> 20100327' –

2
SELECT * FROM MyTable WHERE MyDateCol < CURDATE() 
1

Kullanım NOW() fonksiyonu: MySQL SysDate destekliyorsa daha standart olduğundan

SELECT * FROM MyTable WHERE MyDateCol < NOW() 
2

, sen, ŞİMDİ() veya CURDATE() o yerine kullanmalıdır. YYYYAAGG sayısal biçimde İlişkin

SELECT * FROM MyTable WHERE MyDateCol < SYSDATE;