01/10/2018, 01:11
Kiểm tra tồn tại trong khoảng thời gian (Oracle)
Hi all,
Mình đang gặp rắc rồi khi kiểm tra khoảng thời gian 1 có nằm trong khoảng thời gian 2 hay không (Đến ngày của mỗi khoảng thời gian được phép null).
Mọi người giúp đỡ mình nhé.
Xin cảm ơn.
Bài liên quan
So sánh đầu cuối của hai khoảng thời gian
Vẽ cái hình ra là thấy
Của bạn đây vì den_ngay được phép null nên phải làm ntn. Không đơn giản chỉ là vẽ cái khoảng là ra. Nhiều bạn vẫn không biết cách làm để xử lý cái đoạn null. Vì oảcle null sẽ không so sánh đc
select birth_date from Students
where
(birth_date between tu_ngay and den_ngay and den_ngay is not null)
or
(birth_date >= tu_ngay and den_ngay is null)
Còn 1 cái ngày nữa thì nhét thêm đoạn “and” và làm tương tự vào phần where trên thôi. Mình Demo 1 cái bạn tự làm tiếp
ah, không đọc đoạn null, nếu null thì có thể là dùng nvl để check và thay thế bằng 31/12/9999
Vì đến ngày của 2 khoảng thời gian đều có thể = NULL nên có gặp chút vấn đề về việc so sánh.
Mình đã xử lý được bằng cách dùng Between để so sánh từ ngày, đến ngày của khoảng thời gian 1 với khoảng thời gian 2.
Và dùng NVL(dtToDate,TO_TIMESTAMP(‘31/12/9999’, ‘DD/MM/YYYY’)) để xử lý giá trị null
Cảm ơn Xuân Giang, Nguyen Ca nhé
Cũng là một mẹo hay
Cách nvl để chuyển sang 1 ngày “xa vời” trong tương lai là 1 cách hay. Làm việc với DB mình cũng thấy họ hay để như vậy ví dụ 01-01-3000