- 浏览: 191876 次
- 性别:
- 来自: 广州
文章分类
最新评论
得到两个时间之间的每一天
得到两个时间之间的每一周
得到两个时间之间的每个月
得到两个时间之间的每个年份
原文:https://blog.csdn.net/weixin_33277597/article/details/82215827
create function [dbo].[fn_GetDateRange](@DATE_START datetime, @DATE_END datetime) RETURNS TABLE AS RETURN ( SELECT convert(char(10), DATEADD(dd, number, @DATE_START),120) AS DATA_DATE FROM master.dbo.spt_values as spt WHERE type = 'p' AND number <= DATEDIFF(DAY, @DATE_START, @DATE_END) ) go
得到两个时间之间的每一周
CREATE PROCEDURE [dbo].[GetWeekRange] @tmpDate datetime, @DATE_END datetime AS BEGIN SET DATEFIRST 1 DECLARE @index INT DECLARE @table TABLE ( WeekTimes INT , FirstDay datetime , EndDay datetime ) DECLARE @YearFistWK INT SET @YearFistWK= DATEPART(dw, @tmpDate) SET @index = ( SELECT DATEPART(WEEK, @tmpDate)) IF ( @YearFistWK = 7 ) BEGIN SET @index = @index + 1 END WHILE @tmpDate <= @DATE_END BEGIN INSERT INTO @table SELECT @index , a.FirstDay , b.EndDay FROM ( SELECT 1 AS ID , DATEADD(wk, DATEDIFF(wk, 0, @tmpDate), 0) AS FirstDAy ) a LEFT JOIN ( SELECT 1 AS ID , DATEADD(wk, DATEDIFF(wk, 0, @tmpDate), 6) AS EndDay ) b ON a.ID = b.ID SET @tmpDate = DATEADD(DAY, 7, @tmpDate) SET @index = @index + 1 END SELECT WeekTimes, CONVERT(varchar(100), FirstDay, 23) FirstDay,CONVERT(varchar(100), EndDay, 23) EndDay FROM @table END
得到两个时间之间的每个月
CREATE PROCEDURE [dbo].[GetMonthRange] @tmpDate datetime, @DATE_END datetime AS BEGIN DECLARE @table TABLE ( DateMonth datetime ) WHILE @tmpDate <= @DATE_END BEGIN INSERT INTO @table SELECT DATEADD(mm, DATEDIFF(mm, 0, @tmpDate), 0) AS DateMonth SET @tmpDate = CONVERT(varchar(7), DATEADD(mm, 1, @tmpDate) , 120) + '-01' END select CONVERT(varchar(7), DateMonth, 23) DateMonth from @table END
得到两个时间之间的每个年份
CREATE PROCEDURE [dbo].[GetYearRange] @tmpDate datetime, @DATE_END datetime AS BEGIN DECLARE @table TABLE ( DateYear datetime ) WHILE @tmpDate <= @DATE_END BEGIN INSERT INTO @table SELECT DATEADD(yy, DATEDIFF(yy, 0, @tmpDate), 0) AS DateYear SET @tmpDate = CONVERT(varchar(4), DATEADD(yy, 1, @tmpDate) , 120) + '-01-01' END select CONVERT(varchar(4), DateYear, 23) DateYear from @table END
原文:https://blog.csdn.net/weixin_33277597/article/details/82215827
发表评论
-
sqlserver 计划任务 收缩数据库日志文件
2019-06-28 15:32 1072针对之前的语句做了整合,只有日志文件大于1000M时,才进行收 ... -
Sqlserver查询数据库文件大小和剩余空间
2019-06-28 14:27 954在MS Sql Server中可以能过以下的方法查询出磁盘空间 ... -
使用job对日志文件定期处理
2019-06-28 10:35 420use master go --更改数据库模式为简 ... -
根据当前日期往前推12个月得到每月月份及年份
2019-04-24 11:39 2956效果就是: col_name data_month ... -
查看数据库中每个表的空间大小及行数
2019-04-04 16:58 478create table #t (name varcha ... -
SQL 多列转换为一行【转】
2019-03-14 11:56 1161--创建测试表 IF OBJECT_ID('test') ... -
sqlserver update或者Delete误操作恢复方法---【验证】
2018-11-08 12:32 2289高手具体方法: 原文地址:http://blog.csdn. ... -
SQL并发的问题
2018-01-15 15:55 575参考文献: https://www.cnblogs.com/C ... -
sql函数应用简单举例
2017-11-24 16:25 577返回某个字段 create function getran ... -
sql 生成不重复的随机数
2017-11-24 15:13 2097--创建视图(因为在函数中无法直接使用newid()) ... -
sql 上个月,下个月时间处理函数
2017-11-21 15:52 2974--上月的第一天 SELECT CONVERT(CHAR(1 ... -
删除当前库中所有表记录
2011-10-04 20:45 897--先禁用所有外键约束 exec sp_msforeac ... -
因为文件组primary已满,未能为数据库XX对象XX分配空间
2011-02-18 17:10 16381.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理 ... -
net use 发生系统错误67,找不到网络名
2010-12-29 10:56 16775局域网中有两台电脑 A ... -
反思SQL的or连接词
2010-12-17 18:04 1133下午在调试程序的时候一个诡异的现象,删除单据后被删除的单据依然 ... -
尝试在数据库 5 中提取逻辑页 (1:1640) 失败。该逻辑页属于分配单元XXX ,而非 XXX。
2010-12-02 16:15 4273此信息表明数据库或表 已经部分损坏可以通过以下步骤尝试修复: ... -
win7 安装sql2000
2010-11-22 11:56 1433win7下安装sql2000的要点: 1、以管理员身份运行 m ... -
数据库日志已满
2010-11-09 13:37 843今天去查询历史库存表,发现6天的记录都没有被自动保存,运行备份 ... -
关于解决SQLServer 2005安装时的COM+目录要求问题
2010-09-06 21:23 12611、开户MSDTC服务 开始-运行,输入cmd后回车,在命令提 ... -
sql 所有格式时间
2010-09-06 21:16 7761. 当前系统日期、时 ...
相关推荐
用于显示每月第一天及最后一天的日期值,有利于进行日期数据信息的统计
### 二、SQL语句实现周、月、年、季度的第一天和最后一天 #### 1. 查询某个月的第一天和最后一天 - **第一天**: ```sql SELECT DATEADD(day, -DATEPART(day, GETDATE()) + 1, GETDATE()) ``` 或者 ```sql ...
- 使用`DATEADD()`函数获取指定月份的下个月第一天,然后减去当前月份最后一天的日期得到当前月份的结束日期。 - 开始日期设置为当前月份的第一天。 - **计算周的数量**:根据月份的开始日期和结束日期计算出包含...
本文将深入探讨如何使用SQL获取特定日期,如每年、每月、每季度以及每周的第一天和最后一天,以及特定日期的半夜时间。 首先,我们来看如何获取一个月的第一天。在SQL中,`DATEDIFF()`函数用于计算两个日期之间的...
`+ '01'`是为了确保日期始终是每月的第一天,以便按月份正确地进行比较。 接下来,通过`WHERE`子句过滤出在这个范围内的月份,并使用`AS [Date]`重命名列名为`Date`,这样结果集中就包含了起始日期和结束日期之间...
- 接着,通过循环遍历起始日期与结束日期之间的每一天,并使用`DATEPART`函数确定每一天是否为工作日。 - `DATEPART(Weekday, @dt_begin)`获取当前日期是一周中的第几天(1表示周日,2表示周一,以此类推)。 - `...
这个查询首先通过`TRUNC(SYSDATE, 'DAY')`将系统当前日期截断到天级别,然后加上一天得到下一个月的第一天,再通过`TRUNC(., 'MONTH')`将其截断到月级别作为当月的第一天。最后,使用`LAST_DAY()`函数获取该月的...
这个函数首先检查`@@DATEFIRST`系统变量是否设置为1,因为默认情况下,SQL Server可能将周日设为一周的第一天,而我们需要周一作为第一天。如果设置不正确或日期顺序错误,函数将返回-1。接下来,根据日期是否在同一...
例如,从起始日期开始,每次递增一天,直到达到结束日期。这种方法可以灵活地适应任何日期范围,但要注意防止无限循环。 2. **字符串拼接函数**:如`CONCAT`或`+`操作符(在某些数据库系统中),可以用于组合字符串...
同样提供了两种方法,通过RelativeDate函数获取下个月第一天然后减去一天,计算出本月的总天数。 9. 某月某日星期几函数: 输入日期后,返回对应日期是星期几。利用日期和闰年的计算,确定星期的位置。 10. 求...
7. 使用`SimpleDateFormat`格式化每一天的日期,并按照"yyyy"、"mm"、"dd"的格式分割出年、月、日。最后打印出每一天的日期,它会按照"yyyyMMdd"的格式输出。 这样的代码在实际项目中非常实用,尤其是当需要根据...
首先,让我们解析给出的SQL语句: ```sql SELECT rownum AS dateIndex, to_date('20090701', 'yyyy-mm-dd') + rownum - 1 AS DATE_ FROM DUAL CONNECT BY LEVEL >= 1 AND LEVEL (TO_DATE('20090731', 'yyyy-mm-dd'...
-- 将日期增加一天,进入下一个日期 SET @WorkDate = @WorkDate + 1 END END ``` 在这个存储过程中,`DATEPART(WEEKDAY, @WorkDate)`函数用于获取日期的星期几,其返回值范围是1(周一)到7(周日)。因此,通过...
- 如果需要记录每用户的连续签到记录,可以创建一个新的字段来保存连续签到的起始日期,然后在插入新签到记录时更新该字段。 总之,实现MySQL中的连续签到功能需要结合数据库设计、数据操作以及适当的查询逻辑。这...
工作日的判断是基于日期的星期几(`DATEPART(weekday,dt)`),并结合`@@datefirst`系统变量来处理星期日是否为一周的第一天的情况。 **第二种方法:使用WHILE循环** 这个版本的`f_WorkDay`函数同样接受`@dt_begin`...
- 使用`LAST_DAY`函数来获取每个月最后一天的日期。 - 通过减去天数来计算目标日期。 #### 10. 找出早于12年前受雇的员工 - **SQL语句**: ```sql SELECT ename, job FROM emp WHERE MONTHS_BETWEEN(SYSDATE, ...
- 作用:返回指定月份的最后一天。 5. **日期格式化** - **Oracle**: `TO_CHAR` - **SQL Server**: `CONVERT` - 作用:将日期转换为字符串形式,并可自定义格式。 6. **日期截断** - **Oracle**: `TRUNC` - ...