如何选择一个月的最后日期 [英] How to Select Last Date of a Months

查看:97
本文介绍了如何选择一个月的最后日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆