MySQL'deki tarihleri ​​karşılaştırın


95

Verilen 2 tarih arasındaki bir veritabanından bir tarihi karşılaştırmak istiyorum. Veritabanındaki sütun DATETIME ve bunu sadece tarih formatıyla karşılaştırmak istiyorum, datetime formatıyla değil.

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'

Yukarıdaki SQL'i çalıştırdığımda bu hatayı alıyorum:

SQL sözdiziminizde bir hata var; 'us_reg_date, 120)> =' 2000-07-05 'VE DÖNÜŞTÜR (CHAR (10), us_reg_date, 120) <=' 2011- 'yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın satır 1

Bu sorun nasıl çözülebilir?

Yanıtlar:


95

Aşağıdaki sorguyu deneyebilirsiniz,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)

39
Google'dan gelen kişiler için: mysql'deki tarih türü yyyy-aa-gg biçiminde gelir.
Błażej Michalik

89

Bu, bir tarihi dizeye dönüştürmek için SQL Server sözdizimidir . MySQL'de, bir datetime'dan tarihi çıkarmak için DATE işlevini kullanabilirsiniz :

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

Ancak, sütundaki bir dizinden yararlanmak us_reg_dateistiyorsanız, bunun yerine şunu denemek isteyebilirsiniz:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day

1
Dizinden yararlanmayı düşündüğünüz için teşekkür ederim. Sorgunun "+ aralık 1 gün" cümlesine sahip olmaması gerektiğini düşünüyorum.
Jurgenfd

10

Bu benim için çalışıyor:

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

'% Y-% m-% d' biçim dizesine ve giriş tarihinin biçimine dikkat edin.


6

Cevabı aldım.

İşte kod:

SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

2

bu benim için çalıştı:

select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
 AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

Lütfen, yüklemek çok uzun sürdüğü için STR_TO_DATE (sütun, '% d /% m /% Y') önceki çözümlerden değiştirmem gerektiğini unutmayın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.