在datetime列之间查询

时间:2014-11-11 09:51:07

标签: sql sql-server sql-server-2008

我有一个包含两个DateTime列的表,_dateEntry_dateUpdate

我要创建一个查询并根据这些条件选择正确的日期时间列:在_dateEntry_dateUpdate之间选择最新的。 _dateUpdate可能为null,所以我写了这个条件

SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date FROM mytable

但是并不是因为我也得到了最新的。如何修改我的查询?

4 个答案:

答案 0 :(得分:4)

您可以使用案例返回您想要的内容:

SELECT
    id
    , description
    , CASE WHEN _dateEntry > ISNULL(_dateUpdate,0) 
           THEN _dateEntry ELSE _dateUpdate END AS date
FROM
    mytable

答案 1 :(得分:3)

SELECT id, description, MAX(ISNULL(_dateUpdate, _dateEntry)) AS date 
FROM mytable
GROUP BY id, description

答案 2 :(得分:3)

SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date 
FROM mytable ORDER BY ISNULL(_dateUpdate, _dateEntry) desc

答案 3 :(得分:3)

我认为_dateEntry永远不会为NULL。如果可以为NULL告诉我,因为我更改了我的查询

试试这个:

SELECT id, description, 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END as date 
FROM mytable 
ORDER BY 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END desc

因此,如果_dateUpdate为NULL,您将获得_dateEntry的值,因此订单位于两个字段