2009-08-26 9 views
5

myDate adı verilen bir Tarih sütununa sahip tablo varsa, 2009-08-25 09:00:09.0 gibi değerlerle.Tarih Aralığı, PL/SQL'de (Oracle)

Ben 26 Ağustosiçin 11:59:59 ve HİÇBİR kadar 00:00:01 itibaren, 25 Ağustosiçin tüm satırları seçmek istiyorum. yeterli basitçe koşulunu kullanmak mı:

where myDate between Date '2009-08-25' and Date '2009-08-26' 

Ve 25 AğustosÖNCE tüm satırları seçmek istediğiniz, Aug 25. içermeyen ben yapabilir:

where myDate < Date '2009-08-25' 

cevap

11

yönelik verileri isterseniz tam gün 25 ve hariç tüm 26 sen 26 ilk saniyesini kaldırmak gerekir:

where myDate >= Date '2009-08-25' and myDate < Date '2009-08-26' 

veya

where myDate between Date '2009-08-25' and Date '2009-08-26' - interval '1' second 

Güncelleme - Biraz hassas: Oracle DATE veri türü ile ya da zaman olmadan 'Tarih' türleri için hem kullanılır. Tarihsiz tarihlerle uğraşıyorsanız, genellikle gece yarısı anlamına gelen 00:00 zaman dilimi ile depolanır. Bu nedenle, (my_date between '2009-08-25' and '2009-08-26') arasındaki ilk potansiyel iki tam gün seçecektir. 26 ilk saniyesini kaldırarak

, siz istemeden 11'e kadar 12:00:01 AM, Ağustos 25 arasındaki her şeyi elde etmek için 26.

+0

Eğer 26. Başındaki neyi kastediyorsunuz - ikinci sorguda 1/24/60/60 , ne sorun olabilir? – Saobi

+0

26, 00:00 başlar, bu yüzden TÜM 26 hariç, eğer açıkça kaldırmak için o ikinci –

+0

Evet, SADECE 8-26 12:00:00 AM içerir. Bir dakika sonra değil. Tam olarak gece yarısında gerçekleşen bir sıranın şansı düşük, bu yüzden tamam mı? – Saobi

-2
SELECT * 
FROM TABLE 
WHERE myDate BETWEEN myDate ('08/25/2009', 'MM/DD/YYYY') 
         AND myDate ('08/26/2009', 'MM/DD/YYYY') 
+0

bu gerçek mi? – cr0ss

+0

Köşeli parantezden önce TO_DATE değerini unuttu –

1

satırları seçin çıkmamasını sağlamaya : 59: 59 PM, kapsayıcı, şunu deneyin:

Where myDate Between to_Date('yyyymmddhh24miss', '20090825000001') 
        And to_Date('yyyymmddhh24miss', '20090825235959') 

(birinci, ikinci (00:00:00) de 25 parçasıdır O 25 ?? üzerinde Neden kapsam dışında tutmak gece yarısı ...)

Ağustos'tan önce her şeyi almak için 25, şunu deneyin: Eğer dahil etmezseniz

Where myDate < to_Date('yyyymmdd', '20090825')