如何选择一个月的最后日期 [英] How to Select Last Date of a Months
本文介绍了如何选择一个月的最后日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
2012-06-22 00:00:00 。 000 577169 。 990000
2012-06-30 00:00:00 。 000 794 。 990000
2012 -06-30 00:00:00 。 000 256154 。 990000
2012-06-30 00:00:00 。 000 295904 。 990000 ------ i 想要 此 行跨度>。
2012-07-05 00:00:00 。 000 1096469 。 980000
2012-07-10 00:00:00 。 000 2384 。 980000
2012-07-28 00:00:00 。 000 161384 。 970000
2012-07-28 00:00:00 。 000 368084 。 960000
2012-07-28 00:00:00 。 000 1085729 。 960000
2012-07-28 00:00:00 。 000 1228829 。 960000 ------ i 想要 此 行。
2012-08-02 00:00:00 。 000 1341719 。 970000
2012-08-02 00:00:00 。 000 541719 。 970000
2012-08-07 00:00:00 。 000 1341719 。 970000
2012-08-07 00:00:00 。 000 961384 。 970000
2012-08-27 00:00:00 。 000 161384 。 970000 ------ i < span class =code-leadattribute>想要 此 行。
2012-09-10 00:00:00 。 000 2384 。 970000
2012-09-25 00:00:00 。 000 619290 。 570000
2012-09-27 00:00:00 。 000 3790 。 570000
2012-09-29 00:00:00 。 000 84790 。 560000
2012-09-29 00:00:00 。 000 441190 。 550000 ------ 和 < span class =code-leadattribute>想要 此 行。
怎么办呢...
i试过
DATEADD (d,-1,DATEADD(m,DATEDIFF(m,0,'2012-06-01')+ 1,0))
但它只选择所有最后的日期,如
2012-06-30 00:00:00 。 000 794 。 990000
2012-06-30 00:00:00 。 000 256154 。 990000
2012-06-30 00:00:00 。 000 295904 。 990000
解决方案
< blockquote>你可以使用这个查询。
选择日期时间,表格按年份(日期时间),月份(日期时间)的日期时间=最大值(日期时间)
您好,
试试这个
- 首先声明给定日期
声明 @ date date
- 声明日差作为int的一个月的第一天和最后一天
声明 @ daydifference < span class =code-keyword> int
- 声明最后一天为日期
声明 @ lastday date
- 在变量中设置给定日期
set @ date = ' 2016-2-12'
- 获取第一天和最后一天的日差异
set @daydifference =( select datediff(day,dateadd(day,1-day( @ date ), @ date ),
dateadd(月, 1 ,dateadd(day,1 -day( @ date ), @ date ))))
- 获取一个月的第一次
DECLARE @ firstDayOfMonth date = CAST(CAST(YEAR) @ date ) AS varchar ( 4 ))+ ' - ' +
CAST(月( @ date ) AS varchar ( 2 ))+ ' - 01' AS date )
- 现在获得一个月的最后一天
set @lastday =(选择 DATEADD(DAY, @ daydifference-1 , @ firstDayOfMonth ))
选择 @ lastday
它将显示'2016-2-29'作为输出
谢谢
2012-06-22 00:00:00.000 577169.990000
2012-06-30 00:00:00.000 794.990000
2012-06-30 00:00:00.000 256154.990000
2012-06-30 00:00:00.000 295904.990000------ i want this line.
2012-07-05 00:00:00.000 1096469.980000
2012-07-10 00:00:00.000 2384.980000
2012-07-28 00:00:00.000 161384.970000
2012-07-28 00:00:00.000 368084.960000
2012-07-28 00:00:00.000 1085729.960000
2012-07-28 00:00:00.000 1228829.960000------ i want this line.
2012-08-02 00:00:00.000 1341719.970000
2012-08-02 00:00:00.000 541719.970000
2012-08-07 00:00:00.000 1341719.970000
2012-08-07 00:00:00.000 961384.970000
2012-08-27 00:00:00.000 161384.970000------ i want this line.
2012-09-10 00:00:00.000 2384.970000
2012-09-25 00:00:00.000 619290.570000
2012-09-27 00:00:00.000 3790.570000
2012-09-29 00:00:00.000 84790.560000
2012-09-29 00:00:00.000 441190.550000------ and want this line.
how can it be done..
i have tried
DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, '2012-06-01') + 1, 0))
but it select only all the last dates like
2012-06-30 00:00:00.000 794.990000
2012-06-30 00:00:00.000 256154.990000
2012-06-30 00:00:00.000 295904.990000
解决方案
You could use this query.
Select datetime,value from Table group by year(datetime),month(datetime) having datetime=max(datettime)
Hello ,
try this
--first declare a given date declare @date date --declare day difference of first and last day of a month as int declare @daydifference int --declare a lastday as date declare @lastday date --set a given date in the variable set @date='2016-2-12' --get the daydifference of first and last day set @daydifference=(select datediff(day, dateadd(day, 1-day(@date), @date), dateadd(month, 1, dateadd(day, 1-day(@date), @date)))) --get the firsdtday of a month DECLARE @firstDayOfMonth date = CAST( CAST(YEAR(@date) AS varchar(4)) + '-' + CAST(MONTH(@date) AS varchar(2)) + '-01' AS date) --now get the lastday of a month set @lastday=(select DATEADD(DAY, @daydifference-1,@firstDayOfMonth)) select @lastday
it will show '2016-2-29' as output
thanks
这篇关于如何选择一个月的最后日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文