sql函数--日期函数

1.取当前系统时间

1.1 MYSQL:NOW(),SYSDATE(),CURRENT_TIMESTAMP可取得当前日期时间,CURDATE(),CURRENT_DATE可取得当前日期,CURTIME(),CURRENT_TIME可取得当前时间,不包括日期部分

1.2 MSQLServer:取得当前日期时间的函数为GETDATE()

1.3 Oracle:当前时间戳:SYSTIMESTAMP,当前日期时间:SYSDATE,当前日期,当前时间:借助TO_CHAR()对SYSDATE的值进行处理

         例如:SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;     //返回日期2012-06-28

                    SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;     //返回日期10:01:56

2.日期增减

2.1 MYSQL:DATE_ADD()用于进行日期的加法运算,别名:ADDDATE(),也可用于进行减法运算,将expr为负值即可,语法:DATE_ADD(date,INTERVAL expr unit),date为待计算的日期,expr为待进行加法运算的增量,type为加法运算的单位

type参数值                                     expr参数的格式                                           说明
MICROSECOND                             数值类型                                       以微秒为计算单位
SECOND                                          数值类型                                        以秒为计算单位
MINUTE                                             数值类型                                        以分钟为计算单位
HOUR                                                数值类型                                       以小时为计算单位
DAY                                                     数值类型                                        以天为计算单位
WEEK                                                数值类型                                        以周为计算单位
MONTH                                             数值类型                                         以月为计算单位
QUARTER                                        数值类型                                         以季度为计算单位
YEAR                                                 数值类型                                         以年为计算单位

SECOND_MICROSECOND    字符串类型,格式为:SECONDS.     以秒、微秒为计算单位,要求expr参数必须

                                                  MICROSECONDS'       是“秒.微秒”的格式,比如“30.10”表示增加30秒10微秒。

MINUTE_MICROSECOND     字符串类型,格式为:'MINUTES.  以分钟、毫秒为计算单位,要求expr参数必须是

                                                   MICROSECONDS'     “分钟.微秒”的格式,比如“30.10”表示增加30分钟10微秒。

MINUTE_SECOND                  字符串类型,格式为:'MINUTES:    以分钟、秒为计算单位,要求expr参数必须是
                                                   SECONDS'                    “分钟:秒”的格式,比如“30:10”表示增加30分钟10秒。
HOUR_MICROSECOND     字符串类型,格式为:  'HOURS.      以小时、微秒为计算单位,要求expr参数必须是
                                                MICROSECONDS'         “小时.微秒”的格式,比如“30.10”表示增加30小时10微秒。
HOUR_SECOND       字符串类型,格式为:'HOURS:        以小时、分钟、秒为计算单位,要求expr参数必须是
                                    MINUTES:SECONDS'    “小时:分钟:秒”的格式,比如“1:30:10”表示增加1小时30分钟10秒。
HOUR_MINUTE          字符串类型,格式为:             以小时、秒为计算单位,要求expr参数必须是“小时:秒”的格式,
                                          HOURS:MINUTES'               比如“30:10”表示增加30小时10秒。
DAY_MICROSECOND        字符串类型,格式为:       以天、微秒为计算单位,要求expr参数必须是“天.微秒”
                                       'DAYS.MICROSECONDS'         的格式,比如“30.10”表示增加30天10微秒。
DAY_SECOND       字符串类型,格式为:       以天、时、分、秒为计算单位,要求expr参数必须是“天 小时:分钟:秒”
                     'DAYSHOURS:MINUTES:SECONDS'     的格式,比如“1 3:28:36”表示增加1天3小时28分钟36秒。
DAY_MINUTE     字符串类型,格式为:            以天、小时、分钟为计算单位,要求expr参数必须是“天 小时:分钟”
                                      'DAYSHOURS:MINUTES'         的格式,比如“1 3:15”表示增加1天3小时15分钟。
DAY_HOUR                字符串类型,格式为:          以天、小时为计算单位,要求expr参数必须是“天 小时”的格式,
                                      'DAYS HOURS'                      比如“30 10”表示增加30天10小时。
YEAR_MONTH              字符串类型,格式为:     以年、月为计算单位,要求expr参数必须是“年-月”的格式,
                                         YEARS-MONTHS'                  比如“2-8”表示增加2年8个月。

2.2 MSSQLServer:提供DATEADD(),语法:DATEADD (datepart , number, date ),date为待计算的日期,number制定了用于与 datepart 相加的值,datepart指定要返回新值的日期的组成部分,以下为可识别的日期部分及其缩写:

取值                   别名               说明
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                毫秒

2.3 Oracle:使用加号“+”来进行日期的加法运算,其计算单位为“天”,同理使用减号“-”则可以用来计算日期前的特定时间段的时间,使用加减运算我们可以很容易的实现以周、天、小时、分钟、秒等为单位的日期的增减运算,不过由于每个月的天数是不同的,也就是在天和月之间不存在固定的换算率,所以无法使用加减运算实现以月为单位的计算,为此Oracle中提供了ADD_MONTHS()函数用于以月为单位的日期增减运算,ADD_MONTHS()函数的参数格式如下:ADD_MONTHS(date,number),其中参数date为待计算的日期,参数number为要增加的月份数,如果number为负数则表示进行日期的减运算

3.计算日期差额

3.1 MYSQL:使用DATEDIFF()函数用于计算两个日期之间的差额,语法:DATEDIFF(date1,date2),DATEDIFF()函数只能计算两个日期之间的天数差额,如果要计算两个日期的周差额等就需要进行换算

3.2 MSSQLServer:提供了DATEDIFF()函数用于计算两个日期之间的差额,它提供了一个额外的参数用于指定计算差额时使用的单位,其参数调
用格式如下:DATEDIFF ( datepart , startdate , enddate ),其中参数datepart为计算差额时使用的单位,可选值如下:

单位                     别名                       说明
year                    yy, yyyy                      年
quarter               qq, q                      季度
month                mm, m                    月
dayofyear           dy, y                     工作日
day                      dd, d                     天数
week                   wk, ww                   周
Hour                     hh                        小时
minute                  mi, n                   分钟
second                ss, s                      秒
millisecond          ms                      毫秒

3.3 Oracle:使用减号运算符“-”,其计算结果为两个日期之间的天数差

4.计算一个日期是星期几

4.1 MYSQL:提供了DAYNAME()函数用于计算一个日期是星期几,语法:DAYNAME(date),返回的是英文的日期表示法。

4.2 MSQLServer:提供了DATENAME()函数,这个函数可以返回一个日期的特定部分,且尽量用名称来表述这个特定部分,其参数格式如:DATENAME(datepart,date),date为待计算日期,date 参数也可以是日期格式的字符串;参数datepart指定要返回的日期部分的参数,其可选值如下:

可选值                       别名                说明
Year                        yy、yyyy             年份
Quarter                    qq, q                季度
Month                      mm, m            月份
Dayofyear                dy, y            每年的某一日
Day                          dd, d                日期
Week                    wk, ww              星期
Weekday                dw                   工作日
Hour                        hh                    小时
Minute                    mi, n                 分钟
Second                   ss, s                  秒

Millisecond             ms                  毫秒

4.3 Oracle:提供了TO_CHAR()函数用于将数据转换为字符串类型,当针对时间日期类型数据进行转换的时候,它接受两个参数,其参数格式如:TO_CHAR(date,format),date为待转换的日期,format为格式化字符串,数据库系统将按照这个字符串对date进行转换,格式化字符串中可以采用如下的占位符:

占位符                说明
YEAR                 年份(英文拼写),比如NINETEEN NINETY-EIGHT
YYYY                   4位年份,比如1998
YYY                    年份后3位,比如998
YY                      年份后2位,比如98
Y                        年份后1位,比如8
IYYY                   符合ISO标准的4位年份,比如1998
IYY                     符合ISO标准的年份后3位,比如998
IY                       符合ISO标准的年份后2位,比如98
I                         符合ISO标准的年份后1位,比如8
Q                       以整数表示的季度,比如1
MM                    以整数表示的月份,比如01
MON                 月份的名称,比如2月
MONTH            月份的名称,补足9个字符
RM                    罗马表示法的月份,比如VIII
WW                  日期属于当年的第几周,比如30
W                      日期属于当月的第几周,比如2
IW                     日期属于当年的第几周(按照ISO标准),比如30
D                       日期属于周几,以整数表示,返回值范围为1至7
DAY                   日期属于周几,以名字的形式表示,比如星期五
DD                    日期属于当月的第几天,比如2
DDD                 日期属于当年的第几天,比如168
DY                     日期属于周几,以名字的形式表示,比如星期五
HH                    小时部分(12小时制)
HH12                小时部分(12小时制)
HH24               小时部分(24小时制)
MI                       分钟部分
SS                     秒部分

SSSSS             自从午夜开始的秒数

5.取得日期的指定部分

5.1 MYSQL:DATE_FORMAT()函数用来将日期按照特定各是进行格式化,这个函数的参数格式如下:DATE_FORMAT(date,format),format为格式化字符串,格式化字符串中可以采用如下的占位符:
占位符                   说明
%a                         缩写的星期几(Sun..Sat)
%b                         缩写的月份名(Jan..Dec)
%c                         数字形式的月份(0..12)
%D                        当月的第几天,带英文后缀(0th, 1st, 2nd, 3rd, ...)
%d                         当月的第几天,两位数字形式,不足两位则补零(00..31)
%e                         当月的第几天,数字形式(0..31)
%f                           毫秒
%H                        24小时制的小时 (00..23)
%h                        12小时制的小时(01..12)
%I                         12小时制的小时(01..12)
%i                          数字形式的分钟(00..59)
%j                         日期在当年中的天数(001..366)
%k                        24进制小时(0..23)
%l                        12进制小时(1..12)
%M                      月份名(January..December)
%m                      两位数字表示的月份(00..12)
%p                      上午还是下午(AM.. PM)
%r                        12小时制时间,比如08:09:29 AM
%S                       秒数(00..59)
%s                       秒数(00..59)
%T                       时间,24小时制,格式为hh:mm:ss
%U                      所属周是当年的第几周,周日当作第一天(00..53)
%u                       所属周是当年的第几周,周一当作第一天(00..53)
%V                       所属周是当年的第几周,周日当作第一天(01..53)
%v                       所属周是当年的第几周,周一当作第一天(01..53)
%W                     星期几(Sunday..Saturday)
%w                      星期几,数字形式(0=Sunday..6=Saturday)
%X                      本周所属年,周日当作第一天
%x                       本周所属年,周一当作第一天
%Y                       年份数,四位数字
%y                       年份数,两位数字

5.2 MSSQLServer:使用DATENAME()函数,也可以提取日期的任意部分,用法同4.1,还提供了一个DATEPART()函数,这个函数也可以用来返回一个日期的特定部分,其格式如:DATEPART (datepart,date),datepart指定要返回的日期部分的参数,其可选值如下:
可选值              别名               说明
Year                 yy、yyyy          年份
Quarter              qq, q            季度
Month               mm, m         月份
Dayofyear         dy, y          每年的某一日
Day                   dd, d             日期
Week               wk, ww           星期
Weekday           dw              工作日
Hour                  hh                  小时
Minute               mi, n             分钟
Second              ss, s              秒
Millisecond       ms               毫秒

5.3 Oracle:使用TO_CHAR()函数格式化日期的方法,使用它就可以提取日期的任意部分,用法同4.3


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值