date函数

2019-04-28  本文已影响0人  haidaozheng

GETDATE()

从 SQL Server 返回当前的时间和日期。

GETDATE()

Datepart()

返回 指定日期指定日期部分 的整数

Datepart(datepart,date) 返回类型:int

DateName()

返回 指定日期指定日期部分 的字符串

DateName(datepart,date) 返回类型:nvarchar

DATEADD()

在日期中添加或减去指定的时间间隔。

DATEADD(datepart,number,date)

DATEDIFF()

返回两个日期之间的时间。

DATEDIFF(datepart,startdate,enddate)

YEAR(), MONTH(), DAY()

返回表示指定日期的年份、月份、日的整数

SELECT YEAR(0), MONTH(0), DAY(0)

CONVERT()

把日期转换为新数据类型的通用函数,可以用不同的格式显示日期/时间数据。

CONVERT (data_type[(length)],expression[,style])

datepart 参数可以是下列的值:

日期部分 缩写 备注
year yy, yyyy
quarter qq, q 季度
month mm, m
dayofyear dy, y 一年中的第几天
day dd, d
week wk, ww 一年中的第几周
weekday dw 日期部分返回对应于星期中的某天的数,例如:Sunday =1 星期几
Hour hh 小时
minute mi, n 分钟
second ss, s
millisecond ms 毫秒

可以使用的 style 值:

不带世纪数位 (yy) 带世纪数位 (yyyy) 标准 输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
select GETDATE() as '当前日期时间',
DateName(year,GetDate())+'-'+DateName(month,GetDate())+'-'+DateName(day,GetDate()) as '当前日期', 
DateName(quarter,GetDate()) as '第几季度',
DateName(week,GetDate()) as '一年中的第几周',
DateName(DAYOFYEAR,GetDate()) as '一年中的第几天',
DateName(year,GetDate()) as '年',
DateName(month,GetDate()) as '月',
DateName(day,GetDate()) as '日',
DateName(hour,GetDate()) as '时',
DateName(minute,GetDate()) as '分',
DateName(second,GetDate()) as '秒',
DateName(MILLISECOND,GetDate()) as '豪秒',
DateName(WEEKDAY,GetDate()) as '星期几'

select GETDATE() as '当前日期时间',
convert(varchar,DatePart(year,GetDate()))+'-'+convert(varchar,DatePart(month,GetDate()))+'-'+convert(varchar,DatePart(day,GetDate())) as '当前日期', 
DatePart(quarter,GetDate()) as '第几季度',
DatePart(week,GetDate()) as '一年中的第几周',
DatePart(DAYOFYEAR,GetDate()) as '一年中的第几天',
DatePart(year,GetDate()) as '年',
DatePart(month,GetDate()) as '月',
DatePart(day,GetDate()) as '日',
DatePart(hour,GetDate()) as '时',
DatePart(minute,GetDate()) as '分',
DatePart(second,GetDate()) as '秒',
DatePart(MILLISECOND,GetDate()) as '豪秒',
DatePart(WEEKDAY,GetDate()) as '星期几'
查询结果
--1.显示本月第一天
SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) 
select convert(datetime,convert(varchar(8),getdate(),120)+'01',120)


--2.显示本月最后一天
select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0)) 


--3.上个月的最后一天 
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 


--4.本月的第一个星期一
select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0)


--5.本年的第一天 
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) 


--6.本年的最后一天 
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))


--7.去年的最后一天 
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))


--8.本季度的第一天 
SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)  


--9.本周的星期一 
SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0) 


--10.查询本月的记录 
--select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 


--11.查询本周的记录 
--select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 


--12.查询本季的记录 
--select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 
--其中:GETDATE()是获得系统时间的函数。


--13.获取当月总天数:
select DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate()))

--14.获取当前为星期几
select DATEpart(dw, getdate())


--15. 当前系统日期、时间 
select getdate() 


--16. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
--例如:向日期加上2天 
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000


--17. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17


--18. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10


--19. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五


--17. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114) 
select datename(dw,'2004-10-15') 
select 本年第多少周=datename(week,'2004-10-15'),今天是周几=datename(weekday,'2004-10-15')
上一篇 下一篇

猜你喜欢

热点阅读