取所有月份: declare @begin datetime,@end datetime set @begin='2015-2-6' set @end='2015-12-2' declare @months int set @months=DATEDIFF(month,@begin,@end) select convert(varchar(7),DATEADD(month,number,@begin) ,120) AS 月份 from master.dbo.spt_values where ty…
declare @StartDate DATETIME = '2018/08/01'declare @EndDate DATETIME ='2018/09/27'SELECT CONVERT (VARCHAR (100),dateadd(day,n.number,@StartDate),23) AS every_timeFROM master..spt_values nWHERE n.type = 'p' AND n.number <= DATEDIFF(day, @StartDate, @En…
公司有个表记录了出差(加班)的初始时间和截止时间,现在要计算出加班时间,之前的设计并没有考虑到这部分,因此本人通过sql重新计算周末数 表formmain starttime endtime 使用游标方式抓每行的数据进行分析,具体程序如下: CREATE PROCEDURE [dbo].[shish] AS declare @starttime datetimedeclare @endtime datetimedeclare @id decimal(20,0)declare mycursor c…
Sql Server 中一个非常强大的日期格式化函数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/06 S…
在c#中有个Date属性用于返回日期,其实就是当天0点. DateTime dtNow = DateTime.Now; DateTime dtNow2 = dtNow.Date; Console.WriteLine("dtNow=" + dtNow); Console.WriteLine("dtNow2=" + dtNow2); 那么SQL Server中有没有这个呢?开始百度,发现这个真没有! 但是方法还是有的,基本上是这两种: 1)直接转成varchar. 2)…
declare @begin datetime,@end datetime set @begin='2017-01-01' set @end='2019-03-04' declare @months int set @months=DATEDIFF(month,@begin,@end) ),) AS 月份 from master.dbo.spt_values where type='p' AND number<=@months 查询2017-01-01到2019-03-04之间所有的月份 说明:…
getdate //获得系统当前日期 datepart //获取日期指定部分(年月日时分表) getdate()函数:取得系统当前的日期和时间.返回值为datetime类型的. 用法:getdate() 例子: select getdate() as dte,dateadd(day,-1,getdate()) as nowdat 输出结果: dte nowdat --------------------------- ---------------------------1999-11-21 1…
--1.CONCAT 函数:字符串连接(支持sql server2012 SQL规则 如果与NULL连接返回NILL) SELECT empid,CONCAT(firstname,lastname) AS fullname FROM HR.Employees --sql server2012版本以下用 “+”号即可取代 SELECT empid,firstname + N' ' + lastname AS fullname FROM HR.Employees empid fullname ---…
放假之前老大跟我提起了一下2016有个有趣的功能叫 Temporal Table ,今天去看了一下资料整理一下. 这个功能看上去像是临时表,但是其实是系统维护的一个历史记录表.(在某个程度上面比起我们手动维护的历史表应该方便了一点的) 简单直接的说,它的界面看起来是这样的(就像是T1一样) 创建了之后,就会在下面有一个T1History的表中表来记录. 然后我们来试下怎么去玩这个功能.首先,确认你的Sql Server 版本是2016.然后我们通过一个这样的语句来创建表 Use Test go…
1. 查询:以“周”为单位 --查询以下时间段内分别有几周 --时间段:“2017-09-01”到“2017-10-1” select number as wknum from master..spt_values where type='p' AND number>=datepart(wk,'2017-9-1') and number<= datepart(wk,'2017-10-1')   结果如下图 2. 查询:以“月”为单位 --查询以下时间段内分别有几月 --时间段:“2017-09…