老鬼的博客 来都来啦,那就随便看看吧~
sqlserver中datename和datepart的区别
发布于: 2020-05-21 更新于: 2020-05-21 分类于:  阅读次数: 

一:背景

1
2
3
一般像查询每月,每年数据会用到datename和datepart,两个是什么区别的,如果不清楚,
再加上测试环境数据库和生产环境数据库不一致就造成代码出问题。我就遇到了这个问题,
不管你是写存储过程还是代码里面使用,一定要理清楚datename和datepart的区别。

二:介绍和区别

  • 格式
1
2
select datename(year,getdate());
select datepart(year,getdate());
  • 类型
日期部分 缩写 备注
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 毫秒
  • datename
1
2
返回指定日期的指定日期部份的元字串,
如:select datename(year,getdate())返回的对年当前年的字符串,返回的就是2020

注意:

1
2
3
4
5
6
在多数SQL SERVER 英文版本中(以及部分繁体版),
SELECT DATENAME(month, getdate()) 得到 字符串类型的 January ;
而在简体中文版中:SELECT DATENAME(month, getdate()) 得到 字符串类型的 01
而SELECT DATEPART(month,getdate())则在所有版本中都得到 int类型的 1
SELECT DATENAME(weekday, getdate()) 得到“星期X”
SELECT DATEPART(weekday, getdate()) 得到星期对应的数字,一(1)/二(2)/三(3).。。。
  • datepart
1
2
3
4
返回代表指定日期的指定日期部分的整数
因为DatePart返回类型为int类型,所以当前日期的结果是做了运算的结果,
如果要使用月份不满10补0可以使用:
SELECT RIGHT('00'+CONVERT(VARCHAR(10),Datepart(month,GETDATE())),2)

三:常用sql

  • datename
1
2
3
4
5
6
7
8
9
10
11
12
13
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 '星期几'
  • datepart
1
2
3
4
5
6
7
8
9
10
11
12
13
select GETDATE() as '当前日期时间',
DatePart(year,GetDate())+'-'+DatePart(month,GetDate())+'-'+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 '星期几'
*************感谢您的阅读*************