仅在日期>时获取列值。今天

时间:2014-11-02 16:07:18

标签: sql sql-server

我有一个查询,我需要在4列中获取值,但前提是日期比第5列的日期大。我尝试了以下但是它似乎没有起作用。

Select  
(case when clientplans.END_DATE < convert(date,getdate(,101) then '') else insplans.Desc_upper as PLAN NAME,
(case when clientplans.END_DATE < convert(date,getdate(,112) then '') else insplans.ID_NO,
(case when clientplans.END_DATE < convert(date,getdate(,112) then '') else insplans.cert_NO,

我已将结束日期的日期转换如下:     将(varchar,clientplans.END_DATE,112)转换为POLICY_EXP_DATE,

我在查询后期转换结束日期是否重要?必须以特定顺序将clientplans.end_date插入到结果中,该顺序恰好在description,id和cert编号之后。谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

也许这样的事情符合你的要求:

Select (case when cp.END_DATE > cast(getdate() as date) then insplans.Desc_upper end) as PLAN_NAME,
       (case when cp.END_DATE > cast(getdate() as date) then insplans.ID_NO end) as ID_NO,
       (case when cp.END_DATE > cast(getdate() as date) then insplans.cert_NO END) as cert_NO
from clientplans cp . . .

请注意以下事项:

  • 此表使用表别名(cp的{​​{1}}),因此查询更容易编写和阅读。
  • 它使用clientplanscast()来获取日期。
  • 不匹配的行的值为date而不是NULL。这通常更有意义。

编辑:

当然,如果您愿意,可以使用''

''

答案 1 :(得分:0)

使用它来开始今天:DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

例如:

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

对你而言......

Select  
(case when clientplans.END_DATE > DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) then '') else insplans.Desc_upper as PLAN NAME,
(case when clientplans.END_DATE > DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) then '') else insplans.ID_NO,
(case when clientplans.END_DATE > DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) then '') else insplans.cert_NO,

答案 2 :(得分:0)

我认为需要适当的演员所以我在这里使用了CAST(Field as DATE)和 在您的查询中getdate(,101)语法错误

Select  
(case when CAST(clientplans.END_DATE as date) < CAST(getdate() as date) then '')
 else insplans.Desc_upper as PLAN NAME,
(case when CAST(clientplans.END_DATE as date) <  CAST(getdate() as date) then '')
 else insplans.ID_NO,
(case when CAST(clientplans.END_DATE as date) <  CAST(getdate() as date) then '')
 else insplans.cert_NO

答案 3 :(得分:0)

您可以在第5列上使用光标

并检查@ cursor_date&gt;比今天更大。

只有这样才能获得4列的其余部分。