MyH*_*rts 7 sql sql-server sql-server-2005
首先,我要感谢大家帮助我,它给了我很多关于如何做到这一点的想法,我想出了我自己的方法,我只需要帮助将它放入查询
我希望用户输入日期,然后获取当前年份.减去这两个,然后执行每个人都发布的日期添加.这是可能的,最好的方法是什么?
year(getdate())-@DYYYY=Y
?
dateadd(year,-Y,getdate())
Run Code Online (Sandbox Code Playgroud)
根据您对硬编码年份值的评论,使用
DATEDIFF(year,BOOKED,GETDATE())
Run Code Online (Sandbox Code Playgroud)
获得自您之后的日期以来的年数应该有希望引导您走向您所追求的方向.
您最终可能会得到类似的结果:
SELECT DATEADD(year, -DATEDIFF(year,BOOKED,GETDATE()), GETDATE())
Run Code Online (Sandbox Code Playgroud)
好吧,它看起来更像是你真正想做的事情(我可能错了,对不起,如果是这样的话)是按年份对预订进行分组.
以下结果会帮助实现吗?
SELECT SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0), Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM DataWarehouse.dbo.B01Bookings AS B101Bookings
GROUP BY SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0)
Run Code Online (Sandbox Code Playgroud)
正如我所说,这是对你的目标的猜测,不一定是你问题的答案.
要从日期中减去一年,只需使用 DATEADD() 函数
SELECT DATEADD(year, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)
编辑:
SELECT SDESCR,DYYYY, Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM DataWarehouse.dbo.B01Bookings AS B101Bookings
WHERE
(BOOKED <= Convert(int, Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + '/' + Convert(varchar, DatePart(day, GetDate())) + '/' + DYYYY))
Group By SDESCR,DYYYY
Order by DYYYY
Run Code Online (Sandbox Code Playgroud)
编辑 2:
我刚刚运行了这个语句
select Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + '/' + Convert(varchar, DatePart(day, GetDate())) + '/' + '2007')
Run Code Online (Sandbox Code Playgroud)
哪个运行良好。所以我的问题是 DYYYY 列中存储了什么?它是否始终包含有效年份,是否可以包含空值?
归档时间: |
|
查看次数: |
55029 次 |
最近记录: |