【发布时间】:2011-08-22 04:09:12
【问题描述】:
我正在写一份声明,以提取最快到期的帐户。我的查询目前按月和日排序,因为年份无关紧要。无论如何将当前月份和日期设置为最高值?而不是 1 月 1 日?
SELECT *
FROM clients
WHERE LiveDate IS NOT NULL
Order by DATEPART(month, LiveDate), DATEPART(day, LiveDate)
我是否只需将其拆分为两个查询,一个在当前月份之后查找,一个在之前查找,然后加入它们以使它们处于正确的顺序
示例:
date founded || Annual function
01/01/2011 || beach outing
11/03/2010 || family day
23/03/2009 || Movies
05/04/2000 || Girls night out
10/05/2005 || Cricket function
29/07/2011 || candle lit formal dining
30/07/2008 || childrens day
04/08/2005 || board games day
03/012/2006 || pizza night
20/012/2001 || camping trip
因为这是一年一度的郊游,所以这一年并不重要。我想按照最接近现在到年底的事件的顺序来拉它们,然后是从年初到今天。
因此结果将根据当前日期按以下顺序排列:2011 年 6 月 23 日
date founded || Annual function
29/07/2011 || candle lit formal dining
30/07/2008 || childrens day
04/08/2005 || board games day
03/012/2006 || pizza night
20/012/2001 || camping trip _ _ _ _ _ _ _ New year _ _ _ _ _
01/01/2011 || beach outing
11/03/2010 || family day
23/03/2009 || Movies
05/04/2000 || Girls night out
10/05/2005 || Cricket function
【问题讨论】:
-
好吧,您自己的建议可能已经足够了。但是您需要使用 UNION,而不是 JOIN 进行 2 个查询。
-
我不确定我是否完全理解你的意思。您想在当前日期之后返回由
LiveDate订购的客户吗?因为您问题下方的评论表明您还希望在当前日期之前获得客户。当前日期为 12 月 31 日时会发生什么? -
我想按顺序退回明年从今天到昨天的所有客户。我想我会像 Petr 纠正我那样使用工会。它有效。
-
不,不是因为它在最后订购。不在每个选择中。我可能只需要运行两个查询。
标签: sql sql-server datetime date sql-order-by