设为首页 收藏本站
查看: 936|回复: 0

[经验分享] SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName

[复制链接]

尚未签到

发表于 2018-10-20 11:18:39 | 显示全部楼层 |阅读模式
  一,月份的最后一天
  函数 EOMonth 返回指定日期的最后一天
EOMONTH ( start_date [, month_to_add ] )  1,对于start_date 有两种输入方式,能够转换为Date的字符串类型 和 date 数据类型。
declare @date date  
set @date=getdate()
  

  
select EOMONTH(@date),EOMONTH('2016-08-06'),EOMONTH('20160806')
  2,month_to_add 是int 类型,能够为正整数,负整数和0,默认值是0,如果省略,那么使用默认值0。

declare @date date  
set @date=getdate()
  

  
select EOMONTH(@date) as CurrentMonth_EndDay,
  
    EOMONTH(@date,1) as NextMonth_EndDay,
  
    EOMONTH(@date,-1) as LastMonth_EndDay

  二,月份的第一天
  使用DateFromParts 函数,能够从三个正整数(year,month,day)中获取date 类型。
DATEFROMPARTS ( year, month, day )  1,只需要将day 参数设置1,就能获取月份的第一天。
declare @date date  
set @date=getdate()
  

  
select DATEFROMPARTS(year(@date),month(@date),1)
  三,Format 函数
  Format 函数返回值得数据类型是:nvarchar 或 null
FORMAT ( value, format [, culture ] )  参数 format 是日期/时间的显式格式:

  •   yyyy-MM-dd:表示年,月,日
  •   hh:mm:ss fffffff:表示时,分,秒,毫秒
  1,以特定的格式: “yyyy:MMdd hh:mm:ss fffffff” 显式日期/时间
select format(SYSDATETIME(),'yyyy-MM-dd hh:mm:ss fffffff')
  2,计算当前月份的第一天
FORMAT(GETDATE(),'yyyyMM01')  四,当前日期是周几
  在SQL Server中,通过DataFirst选项设置一周的第一天,number是从1到7,表示一周的7天。
SET DATEFIRST { number | @number_var }  1,可以通过@@datefirst来获取设置的值
set DATEFIRST 1  
select @@datefirst
  2,使用函数datepart函数获取当天是周几

set DATEFIRST 1  
--select @@datefirst
  

  
--Result : 2
  
select datepart(WEEKDAY,getutcdate())
  

  
set DATEFIRST 2
  
--select @@datefirst
  

  
--Result: 1
  
select datepart(WEEKDAY,getutcdate())

  由于设置不同的DateFirst,会导致datepart返回不同的数值,所以必须借助@@DateFirst

set DATEFIRST 2  
--Result : 2
  
select Datepart(weekday, getdate()+@@datefirst - 1)
  

  
set DATEFIRST 1
  
--Result : 2
  
select Datepart(weekday, getdate()+@@datefirst - 1)

  五,使用DateName获取WeekDay的名字,跟DateFirst的设置没有关系,跟语言设置相关
  3.1 查看当前的语言设置
select @@language  3.2 查看系统支持的语言
select alias,name, *  
from sys.syslanguages
  3.3 设置语言
--将语言设置为简体中文  
set LANGUAGE 'Simplified Chinese'
  

  
--将语言设置为英语
  
set LANGUAGE 'us_english'
  3.4 使用DateName获取WeekDay的名字

set LANGUAGE 'Simplified Chinese'  
--Result:星期二
  
select  DATENAME(WEEKDAY,getutcdate())
  

  
set LANGUAGE 'us_english'
  
--Result:Tuesday
  
select  DATENAME(WEEKDAY,getutcdate())




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624005-1-1.html 上篇帖子: 处于同一域中的两台SQL Server 实例无法连接 下篇帖子: socket 之非阻塞 Server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表