SQL Server With 递归 日期 循环】的更多相关文章

要实现的效果:查询从Date From 到 To 之间的 所有日期: 示例代码如下: DECLARE @DATE_FROM DATETIME = N'2016-05-16';--N'2015-05-16';DECLARE @DATE_TO DATETIME = N'2016-05-17';WITH tmpDays AS               (                SELECT @DATE_FROM DATE_VALUE              UNION ALL       …
WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-21' ) ) AS c FROM Date ORDER BY da…
WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-21' ) ) AS c FROM Date ORDER BY da WITH Temp AS ( SELECT 1 [index], REPLACE(NEWID(), '-', '') as guid UNION ALL SELECT [index] + 1, REPLACE(NEWID(), '-',…
微软在备受多年的争议后,终于对日期时间数据类型开刀了,在新版的SQL Server 2008中一口气增加了4种新的日期时间数据类型,包括: Date:一个纯的日期数据类型. Time:一个纯的时间数据类型. DateTime2:新的日期时间类型,将精度提到到了100纳秒. DateTimeOffset:新的日期时间类型,在DateTime2的基础上增加了时区部分. 下面是在SQL Server 2008中日期时间数据类型的一个简单汇总表: 数据类型 格式 取值范围 精度 存储尺寸 date yy…
SQL Server 函数之日期格式化函数 高文龙关注0人评论612人阅读2017-09-23 13:47:07 SQL Server 函数之日期格式化函数 对于一些经常写SQL Server执行语句的同学来说,日期格式化函数的掌握及应用非常重要,今天我们主要来列举一些经常使用的日期时间格式化函数,具体见下: 我们可以通过SSMS执行新建查询查看执行结果:其实我们最常见也最常用的两种格式: 当前的日期+时间 Select CONVERT(varchar(100), GETDATE(), 120)…
转自:http://blog.csdn.net/hehe520347/article/details/48496853 有个字段值例如2012-07-02 00:00:00.000 转化成 2012-7 select distinct CONVERT(varchar(7), 时间列名称, 120 ) from 表名 以下转载: convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是…
DATEADD   在向指定日期加上一段时间的基础上,返回新的 datetime 值. 语法           DATEADD ( datepart , number, date ) 参数 (1) datepart:是规定应向日期的哪一部分返回新值的参数. 下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写.日期部分 缩写 Year yy, yyyy quarter qq, q Month mm, m dayofyear dy, y Day dd, d Week w…
SQL SERVER似乎天然具有支持递归的属性. 1.比如说,有几次,我编写或修改存储过程的时候,为图方便,在末尾随手写上 执行这个存储过程 的语句,比如 [sql] view plaincopy ALTER PROCEDURE prd_GetData @Top INT = 10; AS SELECT * FROM [dbo].Table1  ORDER BY ID DESC; END EXEC [dbo].prd_GetData 本来应该用鼠标选定最后一行,指定它来执行,但一时手颤,没有选上就…
系统环境 jdk:1.7 数据库:sql server 2008 问题描述 升级1.7之后查询出来的日期就比数据库中的少2天,降回1.6版本的jdk就正常了. 问题原因及解决办法 国内网站有很多不靠谱的回答,好在微软官方给出了解答: https://blogs.msdn.microsoft.com/jdbcteam/2012/01/20/hotfix-available-for-date-issue-when-using-jre-1-7/ 上面这边文章里面就说这个是sqljdbc的一个bug,可…
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06SELECT CONVERT(varchar(100), GET…
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate()    2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 )    2004-09-12 11:06:08 select replace(replace(replace(CONVERT(v…
) , sfrq, ) 我们经常出于某种目的需要使用各种各样的日期格式,当然我们可以使用字符串操作来构造各种日期格式,但是有现成的函数为什么不用呢? SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() ::08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: ) :: ),'-',''),' ',''),':','') ) , ) ) , ) ) ,…
--在SQL Server 中其实提供了CTE[公共表表达式]来实现递归: Declare @Id Int Set @Id = 24;    ---在此修改父节点 With RootNodeCTE(Id,ParentId) As ( Select Id,ParentId From Dept Where ParentId In (@Id) Union All Select Dept.Id,Dept.ParentId From RootNodeCTE Inner Join Dept On RootN…
很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例.   --通过子节点查询父节点WITH  TREE AS(      SELECT * FROM Areas      WHERE id = 6  -- 要查询的子 id     UNION ALL      SELECT Areas.* FROM Areas, TREE      WHERE TREE.PId = Areas.Id )  SELECT Are…
如图所示,Jdate和Jdate2是两个分开的字段,一个是date类型,存储日期,一个是time(0)类型,存储具体时间 现在有这样的要求,就是获得(Jdate和Jdate2组合起来的日期时间)在(当前日期时间之后)的数据 一开始我是用的SQL语句是  select * from table where Jdate>XXX and Jdate2 >XXX.这样的语句查询出来是有问题的,因为这两个条件是分开的,可以说是有前后关系,先满足Jdate再满足Jdate2,而这样写的话就是并列关系了,两…
sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student…
1. 获取系统当前日期函数GETDATE() GETDATE()函数用于返回当前数据库系统的日期和时间,返回值的类型为datetime. SELECT GETDATE() 2. 返回UTC日期的函数GETUTCDATE() UTCDATE()函数返回当前UTC(世界标准时间)日期值. SELECT GETUTCDATE() 3. 获取天数的函数DAY DAY()函数用于返回指定日期是一个月中的第几天,范围从1到31.DAY 与 DATEPART (day.date) 返回相同的值. 语法: DA…
前言 说起这个需求,有点反常规,左边是组织机构树,右边是组织机构对应的员工列表.点击左侧组织机构时传一个组织机构ID,然后查询该组织机构以及其所属的一级节点,如果有部门直属单击节点组织机构,则挂出来员工总数,也就是说根节点不需要向下递归,只需要查询出对应的员工记录即可,相反,所以的一级节点则需要向下递归计算出所有的员工总数.刚开始只知道递归,没有具体的思路,后一个同事帮忙写了一个,后发现思路确实巧妙,所以自己拿出来再分析分享下. 思路分析 1.单击根节点不需要向下递归,那么则把单击根节点单独拿出…
--常用日期转换参数: PRINT CONVERT(varchar, getdate(), 120 ) 2016-07-20 16:09:01 PRINT replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') 20040912110608 PRINT CONVERT(varchar(12) , getdate(), 111 ) 2004/09/12 PRINT CONVERT(varch…
WITH cte AS ( SELECT a.FNUMBER,a.FMATERIALID AS MainId,b.FMATERIALID AS ChileID,CAST(b.FMATERIALID AS VARCHAR(max)) AS lev FROM t_eng_bom a JOIN dbo.T_ENG_BOMCHILD b ON a.fid =b.FID WHERE a.fid = '100150' UNION ALL SELECT d.FNUMBER,d.MainId,d.ChileID…
新的日期类型:是出现在2008中的在2005中没有的日期类型. 1,Date 数据类型  2,time 数据类型  3, datetime2 数据类型  4, datetimeoffset 数据类型 1,Date 数据类型 日期.格式:YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31' .它的存在避免了我们取值的时候产生日期之外的数据 12AM DECLARE @Date AS DATE SET @Date=GETDATE() print @Dat…
tab1 表结构: create tab1 ( id int primary key identity(1,1), parentid int not null, name varchar(25) ) 递归语法(利用CTE表达式): 1.根据父id递归查询子id with tem1(id,parentid,name) as( select id,parentid,name from tab1 where id = 1 union all select tab1.id,tab1.parentid,t…
--CTE递归查询 if(object_id(N'menu') > 0) drop table menu CREATE TABLE MENU ( name nvarchar(50) NOT NULL PRIMARY KEY, senior nvarchar(50) NULL ); INSERT INTO MENU values ('文件',NULL), ('新建','文件'), ('项目','新建'), ('项目11111','项目'), ('项目22222','项目'), ('项目33333'…
select distinct stu.*, dbo.GetClassNameByStudentCode(stu.Code) as ClassName, dbo.GetCourseNameByStudentCode(stu.Code) as CourseName, dbo.GetLinkmanByStudentId(stu.Id) as Linkman, dbo.GetContactByStudentId(stu.Id) as Contact, case when svr.Linkman is…
WITH SUBQUERY AS ( SELECT ORGID FROM OM_ORGANIZATION WHERE PARENTORGID = 'ROOT' UNION ALL SELECT B.ORGID FROM SUBQUERY A, OM_ORGANIZATION B WHERE B.PARENTORGID = A.ORGID ) SELECT DISTINCT * FROM SUBQUERY…
语法格式: while 条件 begin ....... end declare @num begin update SDetail end…
一个存储过程小案例,内容如下: declare @dt datetime set @dt='2016-01-01' while (@dt<='2016-12-31') begin -- 转换字符串格式输出 ),) -- 在 '日' 单位上+1天 ,@dt) end…
一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值   例如:向日期加上2天    select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数.   select datediff(…
From:http://www.cnblogs.com/linzheng/archive/2010/11/17/1880208.html 1.  当前系统日期.时间  select getdate() 2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值   例如:向日期加上2天 ,'2004-10-15') --返回:2004-10-17 00:00:00.000 3 datediff 返回跨两个指定日期的日期和时间边界数. select datediff(…
一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值   例如:向日期加上2天    select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数.   select datediff(…