1.获取当前年份:
SELECT CONVERT(INT,DateName(year,GetDate()))
-----------------------------华丽的分割线---------------------------------
2.获取当前月份
SELECT CONVERT(INT,DateName(month,GetDate()))
-----------------------------华丽的分割线---------------------------------
注释:DATENAME函数用法:
具体的语法如下:
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 |
1 | 2008-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
-----------------------------华丽的分割线---------------------------------
-----------------------------华丽的分割线---------------------------------
-----------------------------华丽的分割线---------------------------------
--未完待续