Trong Oracle, chúng tôi có thể biến ngày thành số và áp dụng số học cho chúng theo nhiều cách khác nhau.
Ví dụ sysdate-7
cung cấp cho chúng tôi ngày bảy ngày trước. trunc(some_date)
xóa phần tử thời gian khỏi cột ngày. Và to_char(some_date, 'SSSSS')
cho chúng ta phần tử thời gian của nó như số giây kể từ nửa đêm. Vì vậy, 06:45:00 là 24300 giây và 18:15:59 là 69359 giây (hãy kiểm tra những con số đó, vì chúng là figgerin ngược lại).
Dù sao, đặt tất cả lại với nhau trong một truy vấn như thế này ...
select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
... wil sản xuất tất cả các hồ sơ được tạo ra trong tuần trước với một yếu tố thời gian trong vòng vài giờ cốt lõi.
+1, nhưng điều đó sẽ không mang lại hồ sơ từ tuần này không? –
Cũng có sự mơ hồ trong "tuần trước". Tôi lấy nó để có nghĩa là "bảy ngày qua" nhưng bạn có lẽ có ý nghĩa gì đó khác. – APC
cảm ơn các bạn, nó hoạt động như tôi muốn, "bảy ngày qua" là những gì tôi muốn nói. –