SQL SERVER 获得日期时间

1.获取当前年份:
SELECT CONVERT(INT,DateName(year,GetDate()))

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

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

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

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

具体的语法如下:

DATENAME(param,date);

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

日期部分 缩写
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms

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" 表:
OrderId ProductName OrderDate
1'Computer'2008-12-29 16:25:46.635
现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期。
我们使用如下 SELECT 语句:
SELECT OrderId, DATEADD(day,2,OrderDate) AS OrderPayDateFROM Orders
结果:
OrderId OrderPayDate
12008-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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值