2011-07-08 38 views
5

Cả hai ngày được lưu trữ trong một bảng. Nếu ngày 1 lớn hơn, tôi muốn trả về ngày1, nếu ngày 2 lớn hơn, tôi muốn trả về ngày2. Tôi muốn họ là một phần của truy vấn lớn hơn vì vậy tôi muốn một truy vấn chính nhưng nếu điều đó là không thể, tôi có thể sử dụng một bảng tạm thời và sử dụng một truy vấn thứ hai sau đó. Mã sẽ được thực hiện trong một thủ tục được lưu trữ.So sánh hai ngày trong một bảng và trả lại giá trị lớn hơn bằng cách sử dụng SQL

+4

Để tôi đoán, ngày được lưu trữ dưới dạng VARCHAR (20)? – SQLMason

+0

hai trường ngày, thực sự tôi nghĩ rằng tôi có thể sử dụng tuyên bố trường hợp, chỉ cần không suy nghĩ nhiều về điều này ngay bây giờ. Tôi đang sử dụng SQL 2008, xin lỗi vì không đề cập đến –

Trả lời

12

Nó sẽ là một tuyên bố CASE trong SQL chuẩn

CASE WHEN date1 >= date2 THEN date1 ELSE date2 END 

Có chức năng cụ thể trên một số RDBMS rằng sẽ làm điều đó như Excel không Max nhưng điều này là tiêu chuẩn ...

2

Bạn có thể SELECT GREATEST('1776-07-04', '1977-08-16') . Nó sẽ trả về ngày gần đây nhất (không nhất thiết phải là ngày tốt nhất).

+0

không phải là một hàm chuẩn - DB2 không có hàm đó (bạn sẽ sử dụng 'MAX' thay vào đó, dường như là một cách sử dụng cụ thể của nhà cung cấp). Điều đó nói rằng, nếu nó thuộc về nền tảng của bạn, nó cũng có thể sử dụng được (tôi sẽ sử dụng 'MAX trên DB2, mặc dù nó làm cho nó ít di động hơn). –

+0

cảm ơn đã cứu tôi một loạt thời gian! –

+0

@ X-Zero Tôi đã cân nhắc cú chơi chữ so với tiêu chuẩn, và chơi bóng. –

Các vấn đề liên quan