SQL Server 2014中CURRENT_DATE语法错误及近2年半数据筛选解决
解决SQL Server 2014中CURRENT_DATE语法错误及日期筛选问题
错误原因
SQL Server 2014不支持CURRENT_DATE()函数(这是MySQL、PostgreSQL等数据库的语法),同时直接用365*2+366/2硬编码天数的方式计算2年半,会忽略闰年和不同月份天数差异,导致日期筛选不准确。
修改后的SQL代码
select distinct ac.people_id, ac.first_name, ac.last_name, ac.id_no, ad.city, ed.is_service_event, co.description as County, pe.program_name, pe.program_start_date, pe.program_end_date, el.actual_date, el.approved_date, el.program_providing_service, el.duration, ed.event_name from all_clients_view ac inner join address ad on ad.people_id = ac.people_id left join county co on ad.county = co.county_id inner join program_enrollment_expanded_view pe on pe.people_id = ac.people_id inner join event_log el on ac.people_id = el.people_id inner join event_definition ed on el.event_definition_id = ed.event_definition_id where el.actual_date > DATEADD(MONTH, -30, GETDATE()) -- 2年半=30个月,用DATEADD精确计算
关键修改点
- 替换日期函数:把
CURRENT_DATE()换成SQL Server支持的GETDATE()(或CURRENT_TIMESTAMP,两者功能完全一致,返回当前系统日期时间)。 - 精确计算日期范围:用
DATEADD(MONTH, -30, GETDATE())替代硬编码天数——2年半等于30个月,这种方式自动处理闰年、月份天数差异问题,确保筛选范围准确。
内容的提问来源于stack exchange,提问作者Orderkonnect
相关产品推荐
相关产品推荐

