- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SQLServer日期函数总结案例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
sql server发展至今,关于日期的格式的控制方法,有传统的方法,比如convert(),也有比较便利的新方法,比如format();同样,关于日期的操作函数,也分为传统方法:dateadd()等,也有便利的新方法:eomonth()等.
格式化是指把日期类型(date)、日期和时间类型转化为字符类型,通常使用convert()和format()函数.
1,传统的convert() 。
sql server控制日期的的显示格式,通常使用convert()函数,通过控制style参数来控制日期显示的格式,但是,style很多,不利于记忆.
convert ( data_type [ ( length ) ] , expression [ , style ] ) 。
符合东方人阅读习惯的style及其显示格式如下:
convert()函数的style是数字,记忆起来比较困难,并且只能按照系统定义的格式来显示,不够灵活。sql server提供更为灵活的转换函数format().
2,便利的format()函数 。
format()函数,可以方便和灵活地控制数值、日期和时间类型的显示格式,通常情况下,format()函数主要用于格式化显示date/time类型和数值类型,参数format用于指定显示的格式,给予用户对格式更自由地控制,culture参数是可选的,用于指定显示的语言,该函数返回值的数据类型是nvarchar,如果格式转换失败,该函数返回null:
format ( value, format [, culture ] ) 。
参数format使用#表示一个数值,参数 format 使用以下占位符来表示日期/时间的格式:
(1)把date/time格式化 。
在format参数中指定日期/时间显示的格式,以特定的格式: “yyyy:mmdd hh:mm:ss fffffff” 显式日期/时间,例如:
1
|
select
format(sysdatetime(),
'yyyy-mm-dd hh:mm:ss fffffff'
)
|
(2)转换数值类型 。
在参数format中使用#代表一个数字,使用相应的连接符,拼接成数字的格式字符,例如:
1
|
format(123456789,
'###-##-####'
)
as
'custom number result
|
常用的日期的构成(datepart)是:year、month、day、hour、minute、second、ns、tzoffset(简写为 tz) 。
1
2
3
4
|
datepart ( datepart ,
date
)
year
(
date
)
month
(
date
)
day
(
date
)
|
在实际的产品环境中,周、季度等都很有用途:
datepart()返回的datepart是int类型,如果想要返回字符类型,可以使用datename()函数:
1
|
datename ( datepart ,
date
)
|
通过datepart来构造日期,常用的函数有:
1
2
3
4
|
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() 返回指定日期的最后一天 。
1
|
eomonth ( start_date [, month_to_add ] )
|
参数注释:
例如,查看当前月的最后一天、下一个月的最后一天、上一个月的最后一天:
1
2
3
4
5
6
|
declare
@
date
date
set
@
date
=getdate()
select
eomonth(@
date
)
as
currentmonth_endday,
eomonth(@
date
,1)
as
nextmonth_endday,
eomonth(@
date
,-1)
as
lastmonth_endday
|
2,月份的第一天 。
使用datefromparts() 函数,能够从3个正整数(year,month,day)中获取date 类型,只需要将day 参数设置1,就能获取月份的第一天的日期.
1
2
3
4
|
declare
@
date
date
set
@
date
=getdate()
select
datefromparts(
year
(@
date
),
month
(@
date
),1)
|
也可以使用format() 函数, 以字符串形式返回月份的第一天,例如,获取当前月份的第一天:
1
|
format(getdate(),
'yyyymm01'
)
|
3,切换时区 。
把datetimeoffset类型的数据切换到指定的时区,在转换过程中,utc时间是固定的,依据固定的utc时间,切换到特定时区的本地时间:
1
|
switchoffset ( datetimeoffset, time_zone )
|
参数注释:
使用switchoffset()函数把datetimeoffset的时区偏移(offset)切换到指定的时区中,例如,把本地时间的时区东八区切换到东七区:
1
2
3
4
5
|
declare
@remote datetimeoffset
declare
@
local
datetimeoffset
set
@
local
= sysdatetimeoffset()
set
@remote = switchoffset (@
local
,
'+07:00'
)
select
@remote
as
remote_time,@
local
as
local_time
|
可以看到,东7区的时间比东8区的时间晚一个小时.
4,当前日期是周几 。
在sql server中,通过datafirst选项设置一周的第一天,序数是从1到7,表示一周的7天.
1
|
set
datefirst { number | @number_var }
|
(1)可以通过@@datefirst来获取设置的值 。
1
2
|
set
datefirst 1
select
@@datefirst
|
(2)使用函数datepart函数获取当天是周几 。
1
2
3
4
5
6
|
set
datefirst 1
select
datepart(weekday,getutcdate())
set
datefirst 2
--select @@datefirst
select
datepart(weekday,getutcdate())
|
由于设置不同的datefirst,会导致datepart返回不同的数值,所以必须借助@@datefirst 。
1
2
3
4
5
|
set
datefirst 2
select
datepart(weekday, getdate()+@@datefirst - 1)
set
datefirst 1
select
datepart(weekday, getdate()+@@datefirst - 1)
|
4,使用datename获取weekday的名字 。
weekday的名字跟系统的语言设置有管,跟datefirst的设置没有关系 。
(1) 查看当前的语言设置 。
1
|
select
@@language
|
(2) 查看系统支持的语言 。
1
2
|
select
alias,
name
, *
from
sys.syslanguages
|
(3) 设置语言 。
1
2
|
set
language
'simplified chinese'
set
language
'us_english'
|
(4) 使用datename获取weekday的名字 。
1
2
3
4
5
|
set
language
'simplified chinese'
select
datename(weekday,getutcdate())
set
language
'us_english'
select
datename(weekday,getutcdate())
|
sqlserver_时间格式化_年月日 。
函数名称 参数 示例 说明 。
dateadd(日期部分,数字,日期) 。
select dateadd(year,45,'1990-12-11') 返回 2035-12-11 00:00:00.000 select dateadd(month,45,'1990-12-11') 返回 1994-09-11 00:00:00.000 select dateadd(mm,45,'1990-12-11') 返回 1994-09-11 00:00:00.000 select dateadd(qq,12,'1990-12-11') 返回 1993-12-11 00:00:00.000 select dateadd(hh,12,'1990-12-11') 返回 1990-12-11 12:00:00.000 select dateadd(yy,-12,'1990-12-11') 返回 1978-12-11 00:00:00.000 。
返回给指定日期加上一个时间间隔后的新的日期值。 数字:用于与指定的日期部分相加的值。如果指定了非整数值,则将舍弃该值的小数部分,舍弃时不遵循四舍五入。 日期:指定的原日期 在此函数中 :dw,dy,dd 效果一样都表示天 。
datediff(日期部分,开始日期,结束日期) 。
select datediff(yy,'1990-12-11','2008-9-10') 返回 18 selectdatediff(mm,'2007-12-11','2008-9-10') 返回 9 。
返回两个指定日期的指定日期部分的差的整数值。 在此函数中dw,dy,dd 效果一样都表示天 。
datename(日期部分,日期) 。
1
2
3
4
5
6
|
select
datename(mm,
'2007-12-11'
) 返回 12
select
datename(dw,
'2007-12-11'
) 返回星期二
select
datename(dd, ‘2007-12-11
') 返回 11
select datename(wk, ‘2007-12-11'
) – 50 一年中的第几个星期
select
datename(dy, ‘2007-12-11') – 345 一年中的第几天
select
datename(yyyy,getdate()) + datename(mm,getdate()) – 201803
|
返回表示指定日期的指定日期部分的字符串.
dw 表示一星期中星期几 wk 表示一年中的第几个星期 dy 表示一年中的第几天 。
datepart(日期部分,日期) 。
1
2
3
4
|
select
datepart(mm,
'2007-12-11'
)返回 12
select
datepart(dw,
'2007-12-11'
)返回 3
select
datepart(dd, ‘2007-12-11')返回 11
select
datepart(yyyy,getdate()) + datename(mm,getdate()) – 2021
|
返回表示指定日期的指定日期部分的整数.
wk 表示一年中的第几个星期 dy 表示一年中的第几天, dw 表示一星期中星期几,返回整数默认 1 为星期天 。
getdate()无参数 。
1
|
select
getdate() 返回 2222-02-22 12:34:19.070
|
返回当前系统日期和时间.
getutcdate()无参数 。
1
|
select
getutcdate() 返回2222-02-22 04:34:19.073
|
返回表示当前的utc(世界标准时间)时间。即格林尼治时间(gmt) 。
1、上月的第一天 。
1
|
select
convert
(
char
(10),dateadd(
month
,-1,dateadd(dd,-
day
(getdate())+1,getdate())),111)
|
2、上月的最后一天 。
1
|
select
convert
(
char
(10),dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate()),0)),111)+
' 23:59:59'
|
3、本月的第一天 。
1
|
select
convert
(
char
(10),dateadd(dd,-
day
(getdate())+1,getdate()),111)
|
4、本月的最后一天 。
1
|
select
convert
(
char
(10),dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0)),111)+
' 23:59:59'
|
5、来月的最后第一天 。
1
|
select
convert
(
char
(10),dateadd(m,1,dateadd(dd,-
day
(getdate())+1,getdate())),111)
|
6、来月的最后一天 。
1
|
select
convert
(
char
(10),dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+2,0)),111)+
' 23:59:59'
|
日期部分 含义
缩写year年yy,yyyy quarter季qq,q month月mm, m dayofyear天(请看函数中的说明)dy, y day天(请看函数中的说明)dd, d week星期wk, ww weekday天(请看函数中的说明)dw, w hour小时hh minute分钟mi, n second秒ss, s millisecond毫秒ms 。
================================================== 。
sql server 查询指定范围(一周,一月,本周,本月等)内的数据 。
1.查询今日的所有数据 。
1
|
select
*
from
表名
where
datediff(
day
,字段名,getdate())=0
|
2.查询昨日的所有数据 。
1
|
select
*
from
表名
where
datediff(
day
,字段名,getdate()-1)=0
|
3.查询当天日期在一周前的数据 。
1
|
selcet *
from
表名
where
datediff(week,字段名,getdate()-1)=0
|
4.查询前30天的数据 。
1
|
select
*
from
表名
where
datediff(d,字段名,getdate())<=30
|
5.查询上一个月的数据 。
1
|
select
*
from
表名
where
datediff(m,字段名,getdate())<=1
|
6.查询当天的数据 。
1
|
select
*
from
表名
where
datediff(dd,字段名,getdate())=0
|
7.查询24小时内的数据 。
1
|
select
*
from
表名
where
datediff(hh,字段名,getdate())
|
8.查询本周的数据 。
1
|
select
*
from
表名
where
datediff(week,字段名,getdate())=0
|
9.查询本月的数据 。
1
|
select
*
from
表名
where
datediff(
month
,字段名,getdate())=0
|
10.查询本季的数据 。
1
|
select
*
from
表名
where
datediff(qq,字段名,getdate())=0
|
到此这篇关于sqlserver日期函数总结案例详解的文章就介绍到这了,更多相关sqlserver日期函数总结内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.cnblogs.com/purple5252/p/10468882.html 。
最后此篇关于SQLServer日期函数总结案例详解的文章就讲到这里了,如果你想了解更多关于SQLServer日期函数总结案例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!