sql服务器系统时间格式,SQL Server 日期格式和日期操做

sql服务器系统时间格式,SQL Server 日期格式和日期操做SQLServer发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT();一样,关于日期的操做函数,也分为传统方法:DATEADD()等,也有便利的新方法:EOMonth()等。sql一,日期的格式化格式化是指把日期类型(Date)、日期和时间类型转化为字符类型,一般使用CONVERT()和FORMAT()函数。express1,传统…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

SQL Server发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT();一样,关于日期的操做函数,也分为传统方法:DATEADD()等,也有便利的新方法:EOMonth()等。sql

一,日期的格式化

格式化是指把日期类型(Date)、日期和时间类型转化为字符类型,一般使用CONVERT()和FORMAT()函数。express

1,传统的CONVERT()函数

SQL Server控制日期的的显示格式,一般使用CONVERT()函数,经过控制style参数来控制日期显示的格式,可是,style不少,不利于记忆。spa

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

符合东方人阅读习惯的style及其显示格式以下:code

101: mm/dd/yyyy

110: mm-dd-yyyy

111: yyyy/mm/dd

112: yyyymmdd

120: yyyy-mm-dd hh:mm:ss

121: yyyy-mm-dd hh:mm:sssssss

CONVERT()函数的style是数字,记忆起来比较困难,而且只能按照系统定义的格式来显示,不够灵活。SQL Server提供更为灵活的转换函数FORMAT()。orm

2,便利的FORMAT()函数server

FORMAT()函数,能够方便和灵活地控制数值、日期和时间类型的显示格式,一般状况下,FORMAT()函数主要用于格式化显示date/time类型和数值类型,参数format用于指定显示的格式,给予用户对格式更自由地控制,culture参数是可选的,用于指定显示的语言,该函数返回值的数据类型是NVARCHAR,若是格式转换失败,该函数返回NULL:blog

FORMAT ( value, format [, culture] )

参数format使用#表示一个数值,参数 format 使用如下占位符来表示日期/时间的格式:ci

yyyy、MM、dd:表示年、月、日

hh:mm:ss fffffff:表示时、分、秒、毫秒

使用“/”,“-”等做为链接各个部分(part)的分割符号

(1)把date/time格式化rem

在format参数中指定日期/时间显示的格式,以特定的格式: “yyyy:MMdd hh:mm:ss fffffff” 显式日期/时间,例如:

select format(SYSDATETIME(),’yyyy-MM-dd hh:mm:ss fffffff’)

27a99fe46ce52d0a32219cc51c1cfd89.png

(2)转换数值类型

在参数format中使用#表明一个数字,使用相应的链接符,拼接成数字的格式字符,例如:

FORMAT(123456789,’###-##-####’) AS ‘Custom Number Result

60edfc04de9e7fd782b6171d0b1e6322.png

二,日期和时间的结构

经常使用的日期的构成(datepart)是:year、month、day、hour、minute、second、ns、TZoffset(简写为 tz)

DATEPART ( datepart, date )YEAR( date )MONTH( date )DAY ( date )

在实际的产品环境中,周、季度等都颇有用途:

quarter:季度,取值范围是 一、二、三、4

week:周在年中的序数,取值范围是 1 – 53

dayofyear:天在年中的序数,取值范围是 1 – 366

weekday:天在一周中的序数,取值范围是 1 – 7

DATEPART()返回的datepart是int类型,若是想要返回字符类型,可使用DATENAME()函数:

DATENAME ( datepart , date )

经过datepart来构造日期,经常使用的函数有:

DATEFROMPARTS ( year, month, day)

DATETIME2FROMPARTS (year, month, day, hour, minute, seconds, fractions, precision)

DATETIMEOFFSETFROMPARTS (year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision)

TIMEFROMPARTS ( hour, minute, seconds, fractions,precision )

参数precision 是指小数秒的精度,指的是DateTime2(n)、DateTimeOffset(n),Time(n)中的n值,表示以多少位小数表示1s。

三,日期操做

日期函数:EOMonth、Format、DateAdd、DateDiff、SwitchOffset

1,月份的最后一天

函数 EOMonth() 返回指定日期的最后一天

EOMONTH ( start_date [, month_to_add] )

参数注释:

start_date: 有两种输入方式,可以转换为Date的字符串类型 和 date 数据类型

month_to_add: 是int 类型,可以为正整数,负整数和0,默认值是0,若是省略,那么使用默认值0。

例如,查看当前月的最后一天、下一个月的最后一天、上一个月的最后一天:

declare @datedateset @date=getdate()select EOMONTH(@date) asCurrentMonth_EndDay,

EOMONTH(@date,1) asNextMonth_EndDay,

EOMONTH(@date,-1) as LastMonth_EndDay

2,月份的第一天

使用DateFromParts() 函数,可以从3个正整数(year,month,day)中获取date 类型,只须要将day 参数设置1,就能获取月份的第一天的日期。

declare @datedateset @date=getdate()select DATEFROMPARTS(year(@date),month(@date),1)

也可使用Format() 函数, 以字符串形式返回月份的第一天,例如,获取当前月份的第一天:

FORMAT(GETDATE(),’yyyyMM01′)

3,切换时区

把DateTimeOffset类型的数据切换到指定的时区,在转换过程当中,UTC时间是固定的,依据固定的UTC时间,切换到特定时区的本地时间:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

参数注释:

DATETIMEOFFSET:DateTimeOffset(n)类型的变量

time_zone:指定的目标时区数据,格式是  [+|-] hh:mm

使用SwitchOffset()函数把DateTimeOffset的时区偏移(Offset)切换到指定的时区中,例如,把本地时间的时区东八区切换到东七区:

DECLARE @remoteDATETIMEOFFSETDECLARE @localDATETIMEOFFSETSET @local =SYSDATETIMEOFFSET()SET @remote = SWITCHOFFSET (@local, ‘+07:00’)SELECT @remote AS remote_time,@local AS local_time

39170a5b2227d2309fea57be5cdd00f5.png

能够看到,东7区的时间比东8区的时间晚一个小时。

4,当前日期是周几

在SQL Server中,经过DataFirst选项设置一周的第一天,序数是从1到7,表示一周的7天。

SET DATEFIRST { number | @number_var }

(1)能够经过@@datefirst来获取设置的值

set DATEFIRST 1

select @@datefirst

(2)使用函数datepart函数获取当天是周几

set DATEFIRST 1

select datepart(WEEKDAY,getutcdate())set DATEFIRST 2

–select @@datefirst

select datepart(WEEKDAY,getutcdate())

因为设置不一样的DateFirst,会致使datepart返回不一样的数值,因此必须借助@@DateFirst

set DATEFIRST 2

select Datepart(weekday, getdate()+@@datefirst – 1)set DATEFIRST 1

select Datepart(weekday, getdate()+@@datefirst – 1)

4,使用DateName获取WeekDay的名字

WeekDay的名字跟系统的语言设置有管,跟DateFirst的设置没有关系

(1) 查看当前的语言设置

select @@language

(2) 查看系统支持的语言

select alias,name, *

from sys.syslanguages

(3) 设置语言

set LANGUAGE ‘Simplified Chinese’

set LANGUAGE ‘us_english’

(4) 使用DateName获取WeekDay的名字

set LANGUAGE ‘Simplified Chinese’

select DATENAME(WEEKDAY,getutcdate())set LANGUAGE ‘us_english’

select DATENAME(WEEKDAY,getutcdate())

参考文档:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180107.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月19日 下午9:46
下一篇 2022年10月19日 下午9:46


相关推荐

  • Windows Xp 优化文件 的一段BAT代码

    Windows Xp 优化文件 的一段BAT代码WindowsXp 优化文件的一段 BAT 代码 echoofftitle 优化文件 startclscolo COLS 50LINES 27echo nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp WindowsXp 优化文件 echo nbsp nbsp nbsp nbsp PoweredByThu e

    2026年3月26日
    1
  • linux svn服务器搭建和配置_如何搭建web服务器

    linux svn服务器搭建和配置_如何搭建web服务器1.安装SVN服务器:检查是否已安装#rpm-qasubversion安装SVN服务器#yuminstallhttpdhttpd-develsubversionmod_dav_svnmod_auth_mysql验证安装#cd/etc/httpd/modules#ls|grepsvnmod_authz_svn.somod_dav_…

    2022年10月9日
    5
  • 运维架构

    运维架构运维架构1、运维团队配置运维团队分为:应用运维、系统运维、运维开发、监控运维、DBA团队和安全团队团队分工:应用运维:负责支持线上业务,各自会负责对应的业务线,主要职能是保证线上业务稳定性和同开发共

    2022年7月1日
    25
  • n8n Code节点如何导入自定义Python模块?

    n8n Code节点如何导入自定义Python模块?

    2026年3月13日
    1
  • 配置maven镜像

    配置maven镜像UsingMirrors 是你指定的用于下载某些 artifacts 的位置 如 dependencies 和 maven plugins Repositories 可以在项目中声明 这意味着如果你有自己的订制 Repositories 那么将能够很容易的共享你的项目 然而 你也可能想要不修改项目文件的情况下使用一个特殊仓库的镜像 使用镜像的理由 互联网

    2026年3月16日
    1
  • linux怎么打包整个目录,tar打包整个目录(可排除子目录)几种方法[通俗易懂]

    linux怎么打包整个目录,tar打包整个目录(可排除子目录)几种方法[通俗易懂]这篇文章小编给大家分享一下linuxtar打包目录与有条件打包目录命令,想知道的小伙伴们赶快来看看吧!例1。压缩并打包目录代码如下复制代码tar-czfsmall.tar.gzsmall(目录名);例2。代码如下复制代码tarzcvfbackup.tar.gzsite/*–exclude=site/attach–exclude=site/images简单解释一下:ls-…

    2022年5月11日
    95

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号