最近整理了一下SQL 计算每个月的本月的天数、第一天、最后一天方法。
大家可以通过联机帮助文档学习下 dateadd,datepart,datediff函数。
sql server:
--第一天
select dateadd(dd,-datepart(dd,getdate())+1,getdate())
--最后一天
select dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))
--下月第一天
select dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))
--本月天数
select datediff(dd,getdate(),dateadd(mm,1,getdate()))
或者
select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))
或者
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))
oracle
--本月天数 oracle
select to_number(to_char(last_day(sysdate),'DD')) from dual
分享到:
相关推荐
SQL Server提供了`DATEADD`和`DATEDIFF`函数,通过这两个函数的组合可以轻松地计算出任何给定日期所在月份的第一天。具体实现方式为: ```sql SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0); ``` 这里的关键...
在SQL中,获取当前月的第一天、最后一天以及计算当前月的总天数是常见的日期操作,这在处理与时间相关的数据时非常有用。以下是如何使用T-SQL(SQL Server的编程语言)来实现这些功能的详细解释: 1. 获取当前月的...
13. **获取当月总天数**:可以通过`DATEDIFF`函数计算下个月的第一天与当前日期之间的天数差来得到。 这些函数在SQL中处理日期和时间数据时非常实用,可以帮助我们进行复杂的日期运算和数据过滤,极大地提高了数据...
### 二、Last_day:确定本月最后一天 `Last_day`函数可以帮助我们找到当前或者指定月份的最后一天,这对于月末的业务处理特别有帮助。 **示例代码**: ```sql SELECT last_day(sysdate) FROM dual; ``` 假设今天...
本文将详细介绍如何使用SQL语句来获取不同的日期,包括本月天数、上个月的第一天、本周周一以及当日等。 #### 1. 获取上一天的日期 示例代码:`SELECT dateadd(dd,-1,'20100514')` **解释**:此语句用于返回指定...
使用`DATEADD`和`DATEDIFF`函数可以得到本月的第一天。这两个函数分别用于添加和减去日期间隔。例如,`DATEDIFF(mm,0,getdate())`计算从0到当前日期的月数,然后`DATEADD(mm,...,0)`将这个差值加到0(即1900年1月1...
提供了两种不同的方法,利用RelativeDate函数来计算下个月的第一天并减去一天,得到本月最后一天。 8. 另一种求某月天数的函数: 同样提供了两种方法,通过RelativeDate函数获取下个月第一天然后减去一天,计算出...
`DATEDIFF(mm, 0, GETDATE())`计算了从1900年1月1日到当前日期的月份数,然后`DATEADD()`将这个月份数加到1900年1月1日上,得到的结果就是当前月的第一天。 对于获取本周的星期一,我们可以使用类似的方法,但这次...
这里使用了`DATEDIFF`函数来计算当前日期与本月第一天之间的月份数差,并通过`DATEADD`函数来确定本月的起始和结束日期。 #### 5. SQL 查询上个月的方法 上个月的起始日期和结束日期可以通过以下SQL语句来确定: ``...
- **`TRUNC(SYSDATE, 'MM') + ROWNUM - 1`**:这里使用了`TRUNC`函数获取当前月份的第一天,然后通过`ROWNUM`动态生成从1到当前月份天数的序列,并计算出每一天的具体日期。 - **`FROM DUAL`**:这是一个特殊的表,...
这个函数首先检查`@@DATEFIRST`系统变量是否设置为1,因为默认情况下,SQL Server可能将周日设为一周的第一天,而我们需要周一作为第一天。如果设置不正确或日期顺序错误,函数将返回-1。接下来,根据日期是否在同一...
- 上月的第一天可以通过减少一个月再找到本月的第一天来得到,如`DATEADD(MONTH, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date), 0))`。 - 上月的最后一天可以使用类似的方法,但要注意避免直接加一个月,因为...
2. **SYSDATE - TRUNC(SYSDATE, 'Q')**: 计算当前日期与该季度第一天之间的差值,得到当前日期在这个季度中的位置。 3. **+1**: 因为计算出的是位置而不是天数,所以需要加1得到实际的天数。 **结果**: 此查询返回...
例如,Answer 1展示了通过获取下个月第一天的前一天的日期来得到本月的总天数。Answer 2则利用`DATEDIFF`函数,计算下个月1号与本月1号之间的天数。 2. **条件表达式和数据转换**: - Answer 2中的`CASE`语句用于...
这里,`DATEDIFF(WEEK, 0, GETDATE())`得到当前日期所在周的星期日,再用`DATEADD()`函数将这个日期作为一周的第一天。 接下来,我们探讨一些常用的SQL日期函数: 1. `GETDATE()`:返回系统当前的日期和时间。 2. ...
这是因为DATEDIFF(YEAR, 0, GETDATE())计算了当前日期与1900年1月1日之间的年数差,然后DATEADD将这个差值应用到1900年的开始日期,得到当年的第一天。 接下来,我们看几个使用DATEDIFF和DATEADD进行日期计算的例子...
此语句用于获取指定日期前一年的同月的最后一天的下一天,即获取指定日期前一年的下个月的第一天。如果指定日期为2013年9月10日,则结果为2012年10月1日。 ### 8. 获取指定日期所在年的第一天 ```sql SELECT TRUNC...
- **计算季度天数**:首先确定当前月份所属的季度,然后计算该季度第一天到三个月后的同一天之间的天数: ``` DECLARE @m TINYINT, @time SMALLDATETIME SELECT @m = MONTH(GetDate()) SELECT @m = CASE WHEN @m...
- `DATEADD(ms, -3, 下个月第一天)` 计算上个月最后一天。 - `DAY(上个月最后一天)` 返回上个月的天数,即当前月的天数。 通过上述内容可以看出,在SQL Server中处理日期和时间是非常灵活和强大的,这些操作对于...