SQL语句:取某个日期所在季度的最后一天,精确到时分秒

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句:取某个日期所在季度的最后一天,精确到时分秒相关的知识,希望对你有一定的参考价值。

比如:我选择一个日期,2013-08-12 12:12:995 如何得到该时间所在季度的最后一天(即 “2013-09-30 23:59:59 997”),请高手指教

取季度数字然后再CASE WHEN 就好啦﹐参考以下代码

DECLARE @TB TABLE(TIME DATETIME)
INSERT INTO @TB VALUES('2013-02-09 11:22:59.997')
INSERT INTO @TB VALUES('2013-05-07 13:12:51.333')
INSERT INTO @TB VALUES('2013-07-07 15:42:22.633')
INSERT INTO @TB VALUES('2013-10-20 19:29:22.783')

SELECT *,CASE WHEN DATEPART(QQ,TIME)=1 THEN DATEADD(D,-1,'2013-04-01 23:59:59.997')
 WHEN DATEPART(QQ,TIME)=2  THEN DATEADD(D,-1,'2013-07-01 23:59:59.997')
  WHEN DATEPART(QQ,TIME)=3  THEN DATEADD(D,-1,'2013-10-01 23:59:59.997')
   WHEN DATEPART(QQ,TIME)=4  THEN DATEADD(D,-1,'2014-01-01 23:59:59.997')
                     END AS QUARTER  
         FROM @TB

效果:

TIME                                                               QUARTER                                                

---------------------------------- -                     ----------------------------------- 

2013-02-09 11:22:59.997                                2013-03-31 23:59:59.997

2013-05-07 13:12:51.333                                2013-06-30 23:59:59.997

2013-07-07 15:42:22.633                                2013-09-30 23:59:59.997

2013-10-20 19:29:22.783                                2013-12-31 23:59:59.997

追问

太麻烦了 写了一个SQL :一句话搞定:Select dateadd(ms,-3,DATEADD(qq, DATEDIFF(qq,0,'2012-10-30')+1, 0)) 那个'2012-10-30'可以是任意值或者变量,拿出来共享一下。

参考技术A 先判断这个日期是属于哪个季度,然后case when 季度末就可以

以上是关于SQL语句:取某个日期所在季度的最后一天,精确到时分秒的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql 最近5个季度的最后一天

获取该日期所在季度前一个季度的最后一天的日期

pandas通过DatetimeProperties对象获取日期对象是否是所在季度的最后一天(is quarter end)筛选dataframe数据中日期对象是所在季度最后一天的数据行

SQL Server学习记录之获取每月每季度每年第一天和最后一天

用sql语句求本季度比上一个季度多多少天

Oracle SQL日期获取上个季度的第一天和上个季度的最后一天