sql - 在T-SQL的日期时间字段上使用类似LEAST的方法

标签 sql sql-server tsql datetime

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/

相关文章:

java - 有没有一种方法可以根据文本字段中输入的数据突出显示或为各个表行着色?

sql-server - Sql Server 将查询从临时表插入到多个表中

sql - 在查询结果中显示表名; SQL Server 2008

sql-server - 如何为 T-SQL 选择中的每一行生成随机数?

tsql - "Owned Schemas"的含义/用途是什么?

sql - 我能否以向后兼容的方式更改 SQL Server 表名?例如添加一个永久别名?

mysql - Rails 关联有两个外键?

sql - 是否有相当于 MySQL 的 show table 命令的 Oracle?

sql - 如何在 postgres 中使用 jsonb 列进行 groupBy 来模拟 EAV 计数表?

sql-server - SQL Server提取 "like substring"