Possible Duplicate:
Getting the minimum of two values in sql




好的,我有一个带有两个datetime字段的表,我想选择最旧的日期等于某个日期变量的行。我看到在某处使用了LEAST函数,但是我不能在T-SQL中使用它

我需要这样的东西

SELECT LEAST(date1, date2) as theDate FROM theTable WHERE theDate = '2012-09-24'


但这将在T-SQL中起作用。而且date1或date2有时可以为null,因此可能很重要。

最佳答案

在T-SQL中没有这样的功能。尝试:

SELECT theDate = CASE WHEN date1 < date2 THEN date1 ELSE date2 END FROM ... ;


要处理NULL,您可能需要:

SELECT theDate = NULLIF(CASE WHEN date1 < date2 THEN date1 ELSE date2 END, '20301231')
FROM
(
  SELECT
    date1 = COALESCE(date1, '20301231'),
    date2 = COALESCE(date2, '20301231')
  FROM ...
) AS x;


另外,您不能在theDate子句中引用别名WHERE,该别名尚不存在。您可能要说:

WHERE '20120924' IN (date1, date2);

关于sql - 在T-SQL的日期时间字段上使用类似LEAST的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12569633/

10-11 04:29