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')
网友评论