1、获取当前时间:

/**
获得当前日期+时间(date + time)函数:now(), 常用
**/
select now() from dual;
/**
获取当前时间戳,current_timestamp或者current_timestamp()
**/
select current_timestamp, current_timestamp() from dual;
/**
获得当前日期+时间(date + time)函数:sysdate(),
和now()不同的是,now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值
**/
select now(), sleep(3), sysdate() from dual;

运行结果:

2、日期/时间操作

如果在日期列上有索引,在进行操作不建议对这些字段进行日期函数操作,因为这样该列的索引将无效。应该转换一下思路,对操作的值进行函数操作,而非列。

其中日期格式化的format串有:

说明符

说明

%a

工作日的缩写名称  (Sun..Sat)

%b

月份的缩写名称  (Jan..Dec)

%c

月份,数字形式(0..12)

%D

带有英语后缀的该月日期  (0th, 1st, 2nd, 3rd, ...)

%d

该月日期, 数字形式 (00..31)

%e

该月日期, 数字形式(0..31)

%f

微秒 (000000..999999)

%H

小时(00..23)

%h

小时(01..12)

%I

小时 (01..12)

%i

分钟,数字形式 (00..59)

%j

一年中的天数 (001..366)

%k

小时 (0..23)

%l

小时 (1..12)

%M

月份名称 (January..December)

%m

月份, 数字形式 (00..12)

%p

上午(AM)或下午( PM)

%r

时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)

%S

秒 (00..59)

%s

秒 (00..59)

%T

时间 , 24小时制 (小时hh:分钟mm:秒数ss)

%U

周 (00..53), 其中周日为每周的第一天

%u

周 (00..53), 其中周一为每周的第一天

%V

周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用

%v

周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用

%W

工作日名称 (周日..周六)

%w

一周中的每日 (0=周日..6=周六)

%X

该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用

%x

该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用

%Y

年份, 数字形式,4位数

%y

年份, 数字形式 (2位数)

%%

‘%’文字字符

2.1、日期/时间转字符串、字符串转日期/时间

常用:

 /**
将日期格式化成字符串,mysql在日期的处理上比较宽松,data_format的第一个参数是日期格式的字符串其实也能解析,不过不建议这么操作
**/
select DATE_FORMAT(now(),'%Y%m%d %H:%i:%s');
select DATE_FORMAT('','%Y-%m-%d %H:%i:%s'); /**
将日期格式的字符串转换成日期/时间,该format字符串支持date和time
**/
select STR_TO_DATE('2016-07-11 11:12:03','%Y-%m-%d %H:%i:%s'); /**
将time(不包括日期)转换成字符串形式
**/
select TIME_FORMAT(now(),'%Y%m%d %H:%i:%s');

运行结果:

20160712 11:27:47
2016-07-11 11:12:03
2016-07-11 11:12:03
00000000 11:27:47

其他:

(日期、天数)转换函数:to_days(date), from_days(days)

/**
结果:736522
**/
select TO_DAYS(now()) from dual;
/**
结果:1916-07-15
**/
select FROM_DAYS(736522) from dual;

(时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

/**
结果:3605
**/
select time_to_sec('01:00:05');
/**
结果:01:00:05
**/
select sec_to_time(3605);

拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

/**
结果:2016-01-30
**/
select makedate(2016,30);
/**
结果:2016-02-01
**/
select makedate(2016,32);
/**
结果:12:15:30
**/
select maketime(12,15,30);

(Unix 时间戳、日期)转换函数:unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)

select now(),unix_timestamp(); -- 2016-07-12 11:41:56    ,   1468294916
select unix_timestamp('2016-07-12'); --
select unix_timestamp('2016-07-12 11:38:37'); -- select from_unixtime(1468294702); -- 2016-07-12 11:38:22
select from_unixtime(1468294717); -- 2016-07-12 11:38:37 select from_unixtime(1468294717, '%Y %D %M %h:%i:%s %x'); -- 2016 12th July 11:38:37 2016

2.2、日期计算函数

日期/时间的加减:DATE_ADD(date,INTERVAL expr type) 、DATE_SUB(date,INTERVAL expr type)

还有几个跟上面2个方法差不多的方法,不过可以用上面2个替换掉

/**
和DATE_ADD()是一样的
**/
ADDDATE(date,INTERVAL expr type)
/**
简写,直接加多少天,例如:select ADDDATE(now(),1)
**/
ADDDATE(expr,days) /**
和DATE_SUB()是一样的
**/
SUBDATE(date,INTERVAL expr unit)
/**
简写,直接减多少天,例如:select SUBDATE(now(),1)
**/
SUBDATE(expr,days)

另外还有ADDTIME(expr1,expr2)、 SUBTIME(expr1,expr2)

例子:

/**
增加一天 数字为负数则为减一天
结果为:2016-07-12 14:16:13 , 2016-07-13 14:16:13
**/
select now(),date_add(now(), interval 1 day); /**
减掉一天
结果为:2016-07-12 14:16:13 , 2016-07-11 14:16:13
**/
select now(),date_sub(now(), interval 1 day); /**
复合型相减
结果为:2016-07-12 14:20:05 , 2015-05-12 14:20:05
其中'1 2'中间的分隔符可为:空格 或者 - 或者 ,
**/
select now(),date_sub(now(), interval '1 2' YEAR_MONTH);

其中type的可选值有:

MICROSECOND 间隔单位:毫秒
SECOND 间隔单位:秒
MINUTE 间隔单位:分钟
HOUR 间隔单位:小时
DAY 间隔单位:天
WEEK 间隔单位:星期
MONTH 间隔单位:月
QUARTER 间隔单位:季度
YEAR 间隔单位:年
SECOND_MICROSECOND 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒
MINUTE_MICROSECOND 复合型,间隔单位:分、毫秒
MINUTE_SECOND 复合型,间隔单位:分、秒
HOUR_MICROSECOND 复合型,间隔单位:小时、毫秒
HOUR_SECOND 复合型,间隔单位:小时、秒
HOUR_MINUTE 复合型,间隔单位:小时分
DAY_MICROSECOND 复合型,间隔单位:天、毫秒
DAY_SECOND 复合型,间隔单位:天、秒
DAY_MINUTE 复合型,间隔单位:天、分
DAY_HOUR 复合型,间隔单位:天、小时
YEAR_MONTH 复合型,间隔单位:年、月

2.3、计算日期/时间的差

计算日期(day)的差:DATEDIFF(expr1,expr2), 结果为:expr1-expr2

select DATEDIFF(now(),date_add(now(), interval 1 day)); -- -1

select DATEDIFF(now(),now()); --

计算时间差:TIMEDIFF(expr1,expr2),结果为:expr1-expr2,格式为: 小时:分:秒

/**
结果为:2016-07-12 14:40:03 2016-07-12 18:00:03 03:20:00
**/
select now(),DATE_ADD(now(),INTERVAL 200 minute),TIMEDIFF(DATE_ADD(now(),INTERVAL 200 minute),now())

计算指定单位的差:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),其中unit参考上面的type的那个表格,计算过程是:datetime_expr2-datetime_expr1

/**
结果:2016-07-12 14:51:50 2016-07-12 15:51:50 1
**/
select now(),DATE_ADD(now(),INTERVAL 1 hour),TIMESTAMPDIFF(HOUR,now(),DATE_ADD(now(),INTERVAL 1 hour))

mysql日期相关的函数的更多相关文章

  1. MySql日期与时间函数

    select DATE_FORMAT(date_sub(current_date(), interval 1 day), '%Y-%m-%d') -- 2018-05-29(昨天) select DA ...

  2. Mysql日期时间Extract函数介绍

    MySQL日期时间Extract函数的优点在于可以选取日期时间的各个部分,从年一直到微秒,让我们对MySQL日期时间的处理更为轻松. MySQL 日期时间 Extract(选取)函数.1. 选取日期时 ...

  3. 转)MySQL日期与时间函数

    -- MySQL日期时间处理函数 -- 当前日期:2017-05-12(突然发现今天512,是不是会拉防空警报) SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 ...

  4. MySQL日期时间处理函数

    -- MySQL日期时间处理函数SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47-- 在MySQL里也存在和Oracle里类似的dual虚拟表: ...

  5. MySQL日期和时间函数汇总

    本文基于MySQL8.0 本文介绍MySQL关于日期和时间操作的函数. 日期和时间函数 函数 描述 ADDDATE() 给日期值添加时间值 ADDTIME() 添加time CONVERT_TZ() ...

  6. mysql 日期相关 CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME

    MySQL 时间函数 SELECT CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME, CURRENT_TIME(), NOW(); https://dev. ...

  7. Java mysql 日期相关

    获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString { ...

  8. Mysql日期和时间函数不求人

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table  WHERE TO_DA ...

  9. MySQL日期和时间函数

    WEEKDAY( date ) 返回date的星期索引( = 星期天 ) . mysql> select WEEKDAY( '1997-10-04 22:23:00' ) ; mysql> ...

随机推荐

  1. delete method not allowed 405错误

    造成该问题的原因:iis版本问题 解决办法如下: 修改配置文件web.config <system.webServer><modules><remove name=&qu ...

  2. 洛谷 P1138 第k小整数

    题目描述 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000. 输入输出格式 输入格式: 第一行为n和k; 第二行开 ...

  3. ASP.NET MVC:WebPageRenderingBase.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebPageRenderingBase.cs 提供用于呈现使用 Razor 视图引擎的页的方法和属性. 1.A,WebP ...

  4. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.cpp -- 模型测试

    测试代码.能看到,训练的时候是单个样本.单个样本的训练的,在NN中是属于“stochastic gradient descent”,否则,一批样本在一起的,就是“standard gradient d ...

  5. C语言中将0到1000的浮点数用强制指针类型转换的方式生成一幅图像

    搞过计算机图像的人都知道,图像中的每一个像素通常为一个整型数,它可以分成4个无符号的char类型,以表示其RGBA四个分量.一幅图像可以看做是一个二维整型数组.这里我会生成一个float数组,其数组大 ...

  6. rapidjson库的基本使用

    转自:https://blog.csdn.net/qq849635649/article/details/52678822 我在工作中一直使用的是rapidjson库,这是我在工作中使用该库作的一些整 ...

  7. Asp.net WebApi版本控制

    有关web api的版本控制网上有很多,如Web API 版本控制的几种方式 Web API 版本化的介绍 但是具体的code并不多,或者说可以run的demo 不多. 版本控制如果项目一开始还好做关 ...

  8. IIS通过HTML5实现应用程序缓存的离线浏览

    这里我是使用的IIS7: IIS7发布了网站后要想使用HTML5的应用程序缓存,需要增加一个关于文本/缓存清单( text/cache-manifest)的新的MIME类型,选中网站添加一个MIME类 ...

  9. 使用LeakCanary检测内存泄露 翻译 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. RxJava【变换】操作符 map flatMap concatMap buffer MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...