olarak depolanan tarihleri ARASINDA arama i istiyoruz select * from table where dates between (some_date and another_date)
MySQL: varchar
için sorun tarihleri varchar
olarak depolanır olmasıdır!
burada ben var tarihlerin örnekler:
7/29/2010 9:53 AM
7/16/2010 7:57:39 AM
bazı kayıtlar saniye olduğunu fark edin ve bazı yoktur
i zaman hakkında ilgilendirmiyorhiç ben sadece tarihine gerek
reporttime
çalışmıyor date
alan
şudur:
SELECT * FROM batchinfo
where cast(reporttime as date) between ('7/28/10' and '7/29/10')
bu:
SELECT * from batchinfo WHERE reporttime BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y %h:%i:%s %p')
AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y %h:%i:%s %p')
dönüyor:
Truncated incorrect datetime value: '7/8/2010 11:47 AM'
Incorrect datetime value: '0.00012009' for function str_to_date
bu:
SELECT * from batchinfo WHERE STR_TO_DATE(reporttime, '%m/%/d/%Y %h:%i:%s %p') BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y')
AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y')
dönüyor:
Incorrect datetime value: '7/8/2010 11:47 AM' for function str_to_date
OMG midillileri:
SELECT * from batchinfo WHERE STR_TO_DATE(LEFT(reporttime,LOCATE(' ',reporttime)), '%m/%/d/%Y') BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y')
AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y')
ve şimdi bu geri almak:
i ilk boş önce her şeyi alıyorum
Incorrect datetime value: '7/8/2010' for function str_to_date
benim güncelleştirme Bkz ise - gelecekte ne hakkında daha net olsaydı, bu yardımcı olur Sorun başlangıçta oldu. Örnek veri, tablo yapısı ve beklenen çıktı sağlayın. –
Güncelleştirilen yanıtıma bakın – Mchl
Sağladığım tarih biçimi yanlış. '% M /% d /% Y' olmalıdır. Ayrıca sorgunuza tarihler koyduğunuzda, onları '' (çünkü aslında dizeleri) – Mchl