2013-07-29 110 views
0

我在一个表中有两个表我有一个列违规日期和在其他表中我有NTO日期列 现在我想找到如何从表中检索数据NTOdate违规日期大于50天。 但是当我运行这个查询时,我得到了'50'附近语法错误。如何在sql中使用区间计算日期范围

SELECT [ICPS].[dbo].[tickets].t_vrm 
    ,[ICPS].[dbo].[tickets].t_zone_name 
    ,[ICPS].[dbo].[tickets].t_street_name 
FROM [ICPS].[dbo].[tickets] 
INNER JOIN [ICPS].[dbo].[ticket_events] 
    ON [ICPS].[dbo].[ticket_events].[te_system_ref] = [ICPS].[dbo].[tickets].[t_number] 
WHERE [ICPS].[dbo].[tickets].[t_camera_ticket] = '0' 
    AND [ICPS].[dbo].[tickets].[t_date_time_issued] >= convert(DATETIME, '2012/10/01', 101) 
    AND [ICPS].[dbo].[ticket_events].[te_event_code] = '300' 
    AND [ICPS].[dbo].[ticket_events].[te_date] > DATE (DATE_SUB([ICPS].[dbo].[tickets].[t_date_time_issued], INTERVAL 50 days)) 
+0

NTOdate是te_date列 –

+0

这是sql-server吗? 我不记得MS_SQL中的DATE_SUB函数,我认为它来自MySQL。 – Gidil

回答

0

您可以使用Datediff函数:DateDiff(DD,'firstDate','SecondDate')。下面是示例:

select [ICPS].[dbo].[tickets].t_vrm,[ICPS].[dbo].[tickets] .t_zone_name, [ICPS].[dbo].[tickets] .t_street_name from [ICPS].[dbo].[tickets] inner join 
     [ICPS].[dbo].[ticket_events] on [ICPS].[dbo].[ticket_events].[te_system_ref] = [ICPS].[dbo].[tickets].[t_number] 
where[ICPS].[dbo].[tickets].[t_camera_ticket] = '0' and [ICPS].[dbo].[tickets].[t_date_time_issued] >= convert(datetime,'2012/10/01',101) 
     and [ICPS].[dbo].[ticket_events].[te_event_code] = '300' and 
    DateDiff(DD, [ICPS].[dbo].[tickets].[t_date_time_issued], [ICPS].[dbo].[ticket_events].[te_date]) >50) 
+0

嗨sonam感谢您的快速回复,但想要获得超过50天,我可以在哪里添加它在diffdate列 –

+0

如果你是指[ICPS]。[dbo]。[门票]和[ICPS]之间的区别[dbo]。[ ticket_events]。[te_date]应该大于50天,这里是代码,我也编辑了我的答案。 DateDiff(DD,[ICPS]。[dbo]。[tickets]。[t_date_time_issued],[ICPS]。[dbo]。[ticket_events]。[te_date])> 50 – Sonam

+0

非常感谢sonam, ........ –