我有一个查询,我需要在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编号之后。谢谢你的帮助。
答案 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}}),因此查询更容易编写和阅读。clientplans
到cast()
来获取日期。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列的其余部分。