SQL SERVER 获得日期时间

来源:互联网 发布:mac os 10.9系统下载 编辑:程序博客网 时间:2024/05/29 13:02
1.获取当前年份:
SELECT CONVERT(INT,DateName(year,GetDate()))

-----------------------------华丽的分割线---------------------------------

2.获取当前月份
SELECT CONVERT(INT,DateName(month,GetDate()))

-----------------------------华丽的分割线---------------------------------

注释:DATENAME函数用法:
SQL数据库中,DATENAME函数的作用是是从日期中提取指定部分数据,比如我们想得到当前日期中的年份,月份等信息,就可以使用该函数.返回类型是nvarchar.

具体的语法如下:

DATENAME(param,date);

param是指定要返回日期部分的参数,包括下面几种:

日期部分缩写yearyy, yyyyquarterqq, qmonthmm, mdayofyeardy, ydaydd, dweekwk, wwweekdaydwhourhhminutemi, nsecondss, smillisecondms

date就是指定的日期.

例子:

select DATENAME(year,getdate()) as 'YEAR'

执行上面的SQL语句就会看到返回值为 '2006'

-----------------------------华丽的分割线---------------------------------

3.获取前一天(昨天)开始时间和结束时间
DECLARE @BeginTime DATETIME, @EndTim DATETIME, @StartDate1 DATE

SET @StartDate1=GETDATE();
SELECT @BeginTime=DATEADD(DAY,-1,@StartDate1);
SET @EndTim=DATEADD(second,-1,CONVERT(DATETIME,@StartDate1));
SELECT @BeginTime,@EndTim,@StartDate1

结果:
2017-07-13 00:00:00.000 2017-07-13 23:59:59.000 2017-07-14

-----------------------------华丽的分割线---------------------------------

注释: DATEADD函数用法
DATEADD() 函数在日期中添加或减去指定的时间间隔
语法: DATEADD(datepart,number,date)


date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart 参数可以是下列的值:
datepart缩写年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小时hh分钟mi, n秒ss, s毫秒ms微妙mcs纳秒ns
实例
假设我们有下面这个 "Orders" 表:
OrderIdProductNameOrderDate1'Computer'2008-12-29 16:25:46.635
现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期。
我们使用如下 SELECT 语句:
SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDateFROM Orders
结果:
OrderIdOrderPayDate12008-12-31 16:25:46.635



-----------------------------华丽的分割线---------------------------------

4.获得当天开始时间和结束时间

SELECT CAST(CONVERT(VARCHAR(10),GETDATE(),120)+' 00:00:00' AS DATETIME)
SELECT CAST(CONVERT(VARCHAR(10),GETDATE(),120)+' 23:59:59' AS DATETIME)

-----------------------------华丽的分割线---------------------------------

5.获得当月的第一天开始时间和最后一天结束时间

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
结果:2017-07-01 00:00:00.000

SELECT DATEADD(ms,-3,DATEADD(mm,DATEDIFF(m,0,GETDATE())+1,0))
结果:2017-07-31 23:59:59.997

注意:要回去指定月的第一天开始时间和最后一天结束时间
将GETDATE()进行替换即可

-----------------------------华丽的分割线---------------------------------

6.获得当月天数:
SELECT 32-DAY(GETDATE()+32-DAY(GETDATE()))

-----------------------------华丽的分割线---------------------------------

7.查询指定年月的天数:

DECLARE @YearMonth VARCHAR(6)
SET @YearMonth = '201502' --查询2015年2月有多少天
SELECT DAY(DATEADD(MONTH,1,@YearMonth+ '01 ')-1)

-----------------------------华丽的分割线---------------------------------

8.获得指定年月的月第一天开始时间和最后一天开始时间

DECLARE @Year varchar(10),@Month varchar(10),@YearMonth varchar(20)
SET @Year = '2017'
SET @Month = '03'
SET @YearMonth = @Year + @Month
SELECT @Year + @Month

结果: 201703

SELECT CAST((LEFT(@YearMonth,4)+'-'+SUBSTRING(@YearMonth,5,LEN(@YearMonth))+'-'+'01') AS DATETIME)

结果: 2017-03-01 00:00:00.000

SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,CAST((LEFT(@YearMonth,4)+'-'+SUBSTRING(@YearMonth,5,LEN(@YearMonth))+'-'+'01') AS DATETIME)))

结果: 2017-03-31 00:00:00.000

-----------------------------华丽的分割线---------------------------------
-----------------------------华丽的分割线---------------------------------
-----------------------------华丽的分割线---------------------------------
--未完待续