Shr*_*ut1 3 datetime filter getdate sql-server-2008
我试图将我返回的数据限制为仅包含当前月份中的开始日期和结束日期的那些点 - 活动项目.它的行为有问题,因为今天是这个月的最后一天.我相信明天也会出现问题(样本中没有6月的数据).
这是我的数据集(表1):
Project User Effort Start_Date End_Date
------- ------- ------ -------- --------
Traffic Control DOMAIN\john.smith 0.1 5/1/2013 5/31/2013
Turboencabulator Analysis DOMAIN\mark.webber 0 5/1/2013 5/31/2013
Widget Calibration DOMAIN\mark.webber 0 5/1/2013 5/31/2013
Gizmo Creation DOMAIN\steve.green 0.1 5/1/2013 5/31/2013
Advanced Toolmaking DOMAIN\steve.green 0.6 5/1/2013 5/31/2013
Diesel Engine Diagnostics DOMAIN\steve.green 0.05 5/1/2013 5/31/2013
Cold Fusion Reactor Creation DOMAIN\steve.green 0.3 5/1/2013 5/31/2013
Run Code Online (Sandbox Code Playgroud)
今天使用以下查询时,我没有返回结果:
SELECT * FROM dbo.table1
WHERE Start_Date <= (getdate()) AND End_Date >= (getdate())
ORDER BY User, Start_Date
Run Code Online (Sandbox Code Playgroud)
昨天回来很好.我也有六月的数据(没有在我的样本中显示)但我需要修改我的声明,以便它可以在整个月中可靠地返回当月的数据.
答案 - 纠正WHERE陈述(来自下面的答案中的评论):
WHERE (Month(Start_Date) <= Month((getdate())) AND Month(End_Date) >= Month((getdate()))) AND (YEAR(Start_Date) <= YEAR((getdate())) AND YEAR(End_Date) >= YEAR((getdate())))
Run Code Online (Sandbox Code Playgroud)
Yur*_*ter 10
使用TSQL Month功能:
SELECT * FROM dbo.table1
WHERE Month(Start_Date) = Month(getdate()) AND Month(End_Date) = Month(getdate())
ORDER BY User, Start_Date
Run Code Online (Sandbox Code Playgroud)
小智 7
只需将您的WHERE陈述合并为:
DATEDIFF(m, DATEFIELD, GETDATE()) = 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48499 次 |
| 最近记录: |