2010-01-18 35 views
7

Tôi có một oracle db và tôi cần một bảng chứa tất cả các ngày kéo dài 2 năm; ví dụ: 01/01/2011 đến 01/01/2013.trình tự ngày tháng oracle?

Trước tiên tôi nghĩ đến một chuỗi nhưng dường như loại chỉ được hỗ trợ là số, vì vậy bây giờ tôi đang tìm kiếm một cách hiệu quả để thực hiện điều này

cổ vũ trò lừa bịp

Trả lời

17

Nếu những gì bạn muốn là để cư một khối các bản ghi có ngày tuần tự, đủ dễ thực hiện. Truy vấn sau tạo mười ngày. Tất cả những gì bạn cần làm là điều chỉnh ngày hạt giống để cung cấp cho bạn điểm xuất phát và số level trong mệnh đề connect by để phù hợp với điểm kết thúc của bạn và sau đó cắm nó vào câu lệnh insert.

SQL> select (trunc(sysdate, 'MM')-1) + level 
    2 from dual 
    3 connect by level <= 10 
    4/

(TRUNC(SY 
--------- 
01-JAN-10 
02-JAN-10 
03-JAN-10 
04-JAN-10 
05-JAN-10 
06-JAN-10 
07-JAN-10 
08-JAN-10 
09-JAN-10 
10-JAN-10 

10 rows selected. 

SQL> 
0

Nói ví dụ, chúng tôi có một bảng tên là: datums, với cột mốc tính toán (loại ngày) bảng chứa:

21-01-2010 
22-01-2010 
01-12-2009 
06-10-2008 
03-07-2007 

sau đó bạn có thể sử dụng:

SELECT * 
    FROM datums 
WHERE datum 
BETWEEN to_date('01/01/2009','mm/dd/yyyy') 
    AND to_date('12/31/2010','mm/dd/yyyy') 

kết quả :

21-01-2010 
22-01-2010 
01-12-2009 
Các vấn đề liên quan