① 本月第一天(--减去今天再加上1天)
②本月最后一天
备注:
本月最后一天: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天当然也会存在这样的问题,只要稍微改动一下,在减天数的时候不应减当前时间
的天数,而应减去加了月份之后的天数,如下写法:
这样的话,即使6月没有31天,2009-6-30减去30天就是2009-5-31,再如2009-1-30加一个月是2009-2-28,减去28天后是2009-1-31符合
正确性。
③本周的星期一
本周的最后一天(星期天)
④一年的第一天
现在用年(yy)的时间间隔来显示这一年的第一天。
⑤季度的第一天
假如你要计算这个季度的第一天,这个例子告诉你该如何做。
6一年的最后一天
现在用年(yy)的时间间隔来显示这一年的最后一天。 很简单,先算出这一年的第一天,
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0),然后加一年减一天,即是本年的最后一天
Instance:按照每月的25日为本月的最后一天,算本月的第一天和最后一天。(上月26到这月25)
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优化
2015-02-05 16:37 1322http://tech.diannaodian.com/dw/ ... -
给表加上聚集索引和非聚集索引
2014-12-11 17:28 700创建简单非聚集索引 以下示例为 Purchasing.Pro ... -
查看表中索引语句
2014-12-11 10:37 678SELECT object_name(object_id) ... -
SQL2008一行转多行的精典写法
2013-08-28 12:06 413--创建测试表 create table t1( id ... -
在sql server中利用with as实现递归功能
2013-06-25 10:48 532在sqlserver2005之前,要实现递归功能比较麻烦,比如 ... -
SQL 2005 with(nolock)详解
2013-06-17 17:03 583大家在写查询时, ... -
用SQL语句查询每门成绩都大于80的学生姓名
2013-05-29 10:39 1722昨天遇到的一个SQL面试题,感觉很有趣。 表名stu 结构 ... -
SqlServer强制断开数据库已有连接的方法
2013-02-22 11:03 1619在master数据库中执行如下代码 declare @i IN ... -
表函数与游标
2012-12-25 16:07 741--建立数据源 create table tb1(zm ch ... -
sql server 2005 输出表的函數用法
2012-12-25 16:02 834view sourceprint? 01 --sql ser ... -
SQL杂谈
2012-12-14 17:33 7281、如何用convert什么的把带有时分秒的日期转为时分秒都0 ... -
用FOR XML PATH将查询结果以XML输出
2012-09-20 17:54 1038本文从此而来 http://www.cnblogs.com/d ... -
left join on and
2012-09-20 10:23 885数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临 ... -
筛选索引简单使用
2012-08-17 11:29 1153对于在强制实施数据完整性时的一种常见需求,也可以用筛选索引来解 ... -
排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句
2012-08-10 10:36 6629--在部门内新水排名(如果有相同名次,用dense_rank) ... -
SQL SERVER 中行列转换 PIVOT UNPIVO
2012-08-18 15:34 2330PIVOT用于将列值旋转为列名、同时执行聚合运算(即行转列), ... -
Apply简单使用举例
2012-08-09 17:20 1027APPLY APPLY运算符把右表表达式应用左输入中 ... -
SQL Server 2008语句大全完整版
2012-08-09 10:39 1391--======================== ... -
Not Exists练习
2012-07-23 14:40 888IF OBJECT_ID(N'a') IS NOT NU ... -
Exists练习查找最小缺失值(Missing Value)
2012-07-17 09:34 994第一种方法 USE tempdb; GO IF OBJE ...
相关推荐
要获取上个月的最后一天,可以先找到下个月的第一天,然后减去3毫秒,因为`DATEADD`函数中的时间单位默认为`ms`(毫秒),这样可以确保精确到天: ```sql SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, ...
在SQL中,获取当前月的第一天、最后一天以及计算当前月的总天数是常见的日期操作,这在处理与时间相关的数据时非常有用。以下是如何使用T-SQL(SQL Server的编程语言)来实现这些功能的详细解释: 1. 获取当前月的...
以下是对“SQL语句查询周月年季的最后或第一天”这一主题的深入解析,包括理解日期函数、如何构建SQL语句以及一些实用的示例。 ### 一、SQL日期函数基础 SQL提供了丰富的日期函数来处理日期和时间,如`GETDATE()`...
为了获取当前月的第一天,我们可以使用以下SQL语句: ```sql SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0); ``` 这里,`DATEDIFF(mm, 0, GETDATE())`计算出当前日期与`1900-01-01`之间的月份数量差,然后用`...
所写程序需要生成一个每月第一天与最后一天日期。归档!
获取本周的第一天,可以使用`TRUNC`函数结合日期部分'W'或'd'(代表星期)。'd'会返回周内的第一天,通常为周一。例如: ```sql SELECT TRUNC(SYSDATE, 'd') + 1 FROM DUAL; -- 本周第一天(周一) ``` 本周的...
用于显示每月第一天及最后一天的日期值,有利于进行日期数据信息的统计
time: 返回的时间点,如果时间点为8点,返回的结束时间为第二天的8点,例如获取8月最后一天的结束时间,以8点计,则返回值为 2022-09-01 07:59:59.997 select dbo.GetDateStartFirstAndLast('-q','s','2022-08-03',...
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中,`DATEDIFF()`函数用于计算两个日期之间的...
SQL获取各种时间 例如:目前时间、最近一周时间、最近一月时间、本月起始时间等等、本周第一天(周日)。
在这段代码中,`GETDATE()`函数获取当前系统日期,然后`DATEFROMPARTS`用于构建月份的第一天,`EOMONTH`用于获取同一月份的最后一天。 接着,我们计算上个月的第一天和最后一天: ```sql DECLARE @lastMonth DATE =...
1. **获取某月的第一天**: 使用 `TRUNC` 函数可以截断日期到该月的第一天。 ```sql SELECT TRUNC(SYSDATE, 'MONTH') AS "First Day Of This Month" FROM DUAL; ``` 2. **获取某月的最后一天**: 使用 `LAST_...
首先通过`DATEDIFF(mm,0,'20100514')`计算出当前日期到该年的第一天之间的月份数差值,然后用`DATEADD(mm,月份差值,0)`获取当前月份的第一天,最后减去一天是为了修正可能的偏差,确保结果为当月的第一天。...
为了获取当前月份的第一天,即月初,可以使用`DATEADD`结合`DATEDIFF`函数。具体实现方法如下: ```sql DECLARE @Date DATETIME; SET @Date = GETDATE(); -- 当前月份的第一天 SELECT DATEADD(MONTH, DATEDIFF...
8. **获取当前周的下一周的第一天**:先获取本周的最后一天,再计算下一周的第一天。 以上是基于给定的信息所总结的一些SQL语句的应用方法及其解析,希望能够帮助读者更好地理解和掌握这些SQL语句的实际应用。
* Last_Day 函数:返回一个月的最后一天 * Next_Day 函数:返回下一个指定的日期 这些函数可以帮助开发者处理日期相关的计算和格式化。 Oracle SQL 提供了多种日期函数和格式化选项,帮助开发者轻松地处理日期相关...
- 使用`DATEADD()`函数获取指定月份的下个月第一天,然后减去当前月份最后一天的日期得到当前月份的结束日期。 - 开始日期设置为当前月份的第一天。 - **计算周的数量**:根据月份的开始日期和结束日期计算出包含...