bir şey seçin Postgresql, "dt" adlı bir datetime alanı var. BenPostgresql - date = "01/01/11"
SELECT * FROM myTable WHERE extract (date from dt) = '01/01/11'
bunun en doğrusu sözdizimi nedir böyle bir şey yapmak istiyorum?
Teşekkürler!
bir şey seçin Postgresql, "dt" adlı bir datetime alanı var. BenPostgresql - date = "01/01/11"
SELECT * FROM myTable WHERE extract (date from dt) = '01/01/11'
bunun en doğrusu sözdizimi nedir böyle bir şey yapmak istiyorum?
Teşekkürler!
Sana the format of your date literal senin dt
bir date
için döküm ve düzeltmek istiyorum düşünüyorum:
SELECT *
FROM table
WHERE dt::date = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD
Veya standard version:
SELECT *
FROM table
WHERE CAST(dt AS DATE) = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD
extract
function "tarih" anlamıyor ve bir döner numara.
PostgreSQL ile bir dizi tarih/saat fonksiyonu vardır, bkz. here. Örnekte
şunu kullanabilirsiniz:
CREATE INDEX date_trunc_dt_idx ON myTable (date_trunc('day', dt));
Bir avantajı:
SELECT * FROM myTable WHERE date_trunc('day', dt) = 'YYYY-MM-DD';
düzenli Bu sorguyu çalıştırıyorsanız, buna da date_trunc
işlevini kullanarak bir dizin oluşturmak mümkündür bunun için gereken zaman dilimi ile biraz daha esneklik vardır, örneğin:
Bir ek: Zaman damgası alanı dizine eklendiyse, dt :: date veya CAST (dt AS tarihi) kullanılarak dizin kullanılmaz. Alternatif bir yöntem, dt :: date üzerinde bir fonksiyonel indeks oluşturmak veya bu şekilde yazmak ($ 1 parametresini bir tarih dizesi olarak kullanmak): WHERE dt> = $ 1 AND dt <$ 1 + interval '1 day'. –