2011-07-08 53 views
5

这两个日期都存储在一个表中。如果date1更大,我想返回date1,如果date2更大我想返回date2。我希望他们成为更大的查询的一部分,所以我想要一个主查询,但如果这是不可能的,我可以使用一个临时表,然后使用第二个查询。该代码将在存储过程中执行。比较表中的两个日期并使用SQL返回更大的值

+4

让我猜测,日期存储为VARCHAR(20)? – SQLMason

+0

两个日期字段,实际上我认为我可以用case语句,但是现在对此没有多少思考。我正在使用SQL 2008,抱歉没有提到 –

回答

12

这将是在标准的SQL CASE语句

CASE WHEN date1 >= date2 THEN date1 ELSE date2 END 

有一些RDBMS,将​​做到这一点,如Excel做最大但这是标准的具体功能...

2

你可以SELECT GREATEST('1776-07-04', '1977-08-16') 。它应该返回最近的日期(不一定是最好的日期)。

+0

不是标准函数 - DB2没有这个函数(您可能会使用MAX,而这似乎是供应商特定的用途)。也就是说,如果它属于你的平台,那么它很好用(我会在DB2上使用MAX,尽管它确实使它更便于使用)。 –

+0

谢谢救了我一堆时间! –

+0

@ X-Zero我称双关与标准双打,并且争取双关。 –