`

Sql获取第一天、最后一天

 
阅读更多
① 本月第一天(--减去今天再加上1天)
SELECT DATEADD(DD,-DAY(GETDATE())+1,GETDATE())

②本月最后一天
SELECT DATEADD(DD,-DAY(DATEADD(M,1,GETDATE())),DATEADD(M,1,GETDATE()))

备注:
本月最后一天:select   dateadd(dd,-day(getdate()),dateadd(m,1,getdate()))
上面的这一句就有问题了,一般的想法是取最后一天,可以在当前时间上加一个月,然后减去当前
时间的天数,比如随便2009-8-27,加一个月就是2009-9-27,然后减去2009-8-27时间的天数27天 正好是2009-8-31,没问题呀。但是,
如果当前时间本身就是最后一天的话,就会产生临界问题了,比如传入的实际是2009-5-31,最终得到的最后一天的时间其实也应该是
2009-5-31才对,如果按照上面的写法,2009-5-31加一个月是多少,2009-6-31?2009-7-1?都不是,由于月大月小的问题,6月份只有
30天,所以2009-5-31加一个月后是2009-6-30日,还是按上面的写法然后再减去2009-5-31时间的天数31天,最终得到的最后一天是
2009-5-30,傻眼了,咋回事啊?还有2月只有28或29天当然也会存在这样的问题,只要稍微改动一下,在减天数的时候不应减当前时间
的天数,而应减去加了月份之后的天数,如下写法:
select   dateadd(dd,-day(dateadd(m,1,getdate())),dateadd(m,1,getdate()))

这样的话,即使6月没有31天,2009-6-30减去30天就是2009-5-31,再如2009-1-30加一个月是2009-2-28,减去28天后是2009-1-31符合
正确性。

③本周的星期一
 
 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

   本周的最后一天(星期天)
select dateadd(wk,(SELECT DATEDIFF(wk,0,GETDATE())),6)   

④一年的第一天
  现在用年(yy)的时间间隔来显示这一年的第一天。
  SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

⑤季度的第一天
  假如你要计算这个季度的第一天,这个例子告诉你该如何做。
 
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) 

6一年的最后一天
  现在用年(yy)的时间间隔来显示这一年的最后一天。 很简单,先算出这一年的第一天,
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0),然后加一年减一天,即是本年的最后一天
SELECT DATEADD(DD,-1,DATEADD(YY,1,DATEADD(YY,DATEDIFF(YY,0,GETDATE()),0)))




Instance:按照每月的25日为本月的最后一天,算本月的第一天和最后一天。(上月26到这月25)

DECLARE @MonthBaseDate  DateTime;
 DECLARE @MonthBeginDate DateTime;
 DECLARE @MonthEndDate   DateTime;
 SET @MonthBaseDate=GETDATE();
 IF(DAY(@MonthBaseDate)>=26)
 SET @MonthBaseDat =DATEADD(DD,6,@MonthBaseDate); 
 Select @MonthBeginDate= DATEADD(dd,25, DATEADD(mm,DATEDIFF(mm,0,DATEADD(mm,-1,GETDATE())),0)),@MonthEndDate=DATEADD(dd,24,DATEADD(mm, DATEDIFF(MM,0,GETDATE()),0))
分享到:
评论

相关推荐

    SQL Server中获取第一天、最后一天

    要获取上个月的最后一天,可以先找到下个月的第一天,然后减去3毫秒,因为`DATEADD`函数中的时间单位默认为`ms`(毫秒),这样可以确保精确到天: ```sql SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, ...

    SQL获取当前月的第一天和最后一天和当前月一共几天

    在SQL中,获取当前月的第一天、最后一天以及计算当前月的总天数是常见的日期操作,这在处理与时间相关的数据时非常有用。以下是如何使用T-SQL(SQL Server的编程语言)来实现这些功能的详细解释: 1. 获取当前月的...

    sql语句查询周月年季的最后或第一天

    以下是对“SQL语句查询周月年季的最后或第一天”这一主题的深入解析,包括理解日期函数、如何构建SQL语句以及一些实用的示例。 ### 一、SQL日期函数基础 SQL提供了丰富的日期函数来处理日期和时间,如`GETDATE()`...

    SQl中查询一个月的第一天 ,以及相关的日期函数

    为了获取当前月的第一天,我们可以使用以下SQL语句: ```sql SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0); ``` 这里,`DATEDIFF(mm, 0, GETDATE())`计算出当前日期与`1900-01-01`之间的月份数量差,然后用`...

    收集输入年每个月的第一天与最后一天sql

    所写程序需要生成一个每月第一天与最后一天日期。归档!

    ORACLE获取周月季年的第一天和最后一天

    获取本周的第一天,可以使用`TRUNC`函数结合日期部分'W'或'd'(代表星期)。'd'会返回周内的第一天,通常为周一。例如: ```sql SELECT TRUNC(SYSDATE, 'd') + 1 FROM DUAL; -- 本周第一天(周一) ``` 本周的...

    显示所在月份第一天及最后一天的日期的SQL语句

    用于显示每月第一天及最后一天的日期值,有利于进行日期数据信息的统计

    SQL SERVER 获取年、季、月、周、日开始时间和结束时间

    time: 返回的时间点,如果时间点为8点,返回的结束时间为第二天的8点,例如获取8月最后一天的结束时间,以8点计,则返回值为 2022-09-01 07:59:59.997 select dbo.GetDateStartFirstAndLast('-q','s','2022-08-03',...

    mysql中获取一天、一周、一月时间数据的各种sql语句写法

    2. 获取当月第一天: ```sql SELECT DATA_SUB( NOW(), INTERVAL DAYOFMONTH(NOW()) – 1 DAY); ``` 3. 获取上个月第一天: ```sql SELECT DATE_SUB( DATE_SUB( NOW( ) , INTERVAL DAYOFMONTH( NOW( ) ) -1 DAY ) ,...

    SQL数据库各种时间格式获取技巧

    sql获取当前日期 、当前日期+时间、一个月第一天、本周的星期一、一年的第一天、季度的第一天、当天的半夜、上个月的最后一天、去年的最后一天、本月的最后一天、本年的最后一天、本月的第一个星期一

    SQL日期获取技巧大全

    本文将深入探讨如何使用SQL获取特定日期,如每年、每月、每季度以及每周的第一天和最后一天,以及特定日期的半夜时间。 首先,我们来看如何获取一个月的第一天。在SQL中,`DATEDIFF()`函数用于计算两个日期之间的...

    SQL获取各种时间

    SQL获取各种时间 例如:目前时间、最近一周时间、最近一月时间、本月起始时间等等、本周第一天(周日)。

    计算本月和上个月的第一天和最后一天(SQL Server)

    在这段代码中,`GETDATE()`函数获取当前系统日期,然后`DATEFROMPARTS`用于构建月份的第一天,`EOMONTH`用于获取同一月份的最后一天。 接着,我们计算上个月的第一天和最后一天: ```sql DECLARE @lastMonth DATE =...

    oracle时间函数,如何取得某月的第一天和最后一天

    1. **获取某月的第一天**: 使用 `TRUNC` 函数可以截断日期到该月的第一天。 ```sql SELECT TRUNC(SYSDATE, 'MONTH') AS "First Day Of This Month" FROM DUAL; ``` 2. **获取某月的最后一天**: 使用 `LAST_...

    sql取不同的日期

    首先通过`DATEDIFF(mm,0,'20100514')`计算出当前日期到该年的第一天之间的月份数差值,然后用`DATEADD(mm,月份差值,0)`获取当前月份的第一天,最后减去一天是为了修正可能的偏差,确保结果为当月的第一天。...

    SQL Server时间算法

    为了获取当前月份的第一天,即月初,可以使用`DATEADD`结合`DATEDIFF`函数。具体实现方法如下: ```sql DECLARE @Date DATETIME; SET @Date = GETDATE(); -- 当前月份的第一天 SELECT DATEADD(MONTH, DATEDIFF...

    Sql memo日常查询语句应用

    8. **获取当前周的下一周的第一天**:先获取本周的最后一天,再计算下一周的第一天。 以上是基于给定的信息所总结的一些SQL语句的应用方法及其解析,希望能够帮助读者更好地理解和掌握这些SQL语句的实际应用。

    ORACLE sql 星期几 一个月的第几天等 方法

    * Last_Day 函数:返回一个月的最后一天 * Next_Day 函数:返回下一个指定的日期 这些函数可以帮助开发者处理日期相关的计算和格式化。 Oracle SQL 提供了多种日期函数和格式化选项,帮助开发者轻松地处理日期相关...

    sqlserver 计算当月所有自然周的区间。

    - 使用`DATEADD()`函数获取指定月份的下个月第一天,然后减去当前月份最后一天的日期得到当前月份的结束日期。 - 开始日期设置为当前月份的第一天。 - **计算周的数量**:根据月份的开始日期和结束日期计算出包含...

Global site tag (gtag.js) - Google Analytics