http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html

mysql中函数和关键字不区分大小写。下文函数的datetime参数处既可以用时间字符串也可以用时间变量或表达式。

一、获取当前时间

下面几个方法等效,字符串环境输出格式为:YYYY-MM-DD HH:MM:SS,数字环境输出格式为:YYYYMMDDHHMMSS

now()

current_timestamp()   / current_timestamp

localtime() /localtime

localtimestamp() /localtimestamp

sysdate()

其他方法执行开始时就得到值了,sysdate()方法在函数中动态获得值。

CURDATE()

CURRENT_DATE() / CURRENT_DATE

这两个方法只获取日期,字符串环境中返回HH:MM:SS格式,数字环境中返回HMMSS格式

CURTIME()

CURRENT_TIME() / CURRENT_TIME

这两个方法只获取时间,数字环境中返回YYYYMMDD格式

UTC_DATE() /UTC_DATE

UTC_TIME() /UTC_TIME

UTC_TIMESTAMP()/UTC_TIMESTAMP

返回UTC时间(世界统一时间,0时区,我国在东8区,所以比我国本地时间慢8小时, 本地时间=UTC时间+8小时)

二、获取时间部分数据

Date(datetime)

返回日期 yyyy-MM-dd

Time(datetime)

返回时间 hh:mm:ss

Year(datetime)

Quarter(datetime)

Month(datetime)

MonthName(datetime)

Day(datetime)

Hour(datetime)

Minute(datetime)

Second(datetime)

MicroSecond(datetime)

DayName(datetime)

返回星期几的名字

Week(datetime)

等于Week(datetime,0)

Week(datetime, mode)

mode 一周的第一天 范围 Week 1为第一周...
0 周日 0~53 本年度中有一个周日
1 周一 0~53 本年度中有3天以上
2 周日 1~53 本年度中有一个周日
3 周一 1~53 本年度中有3天以上
4 周日 0~53 本年度中有3天以上
5 周一 0~53 本年度中有一个周一
6 周日 1~53 本年度中有3天以上
7 周一 1~53

本年度中有一个周一

YearWeek(datetime)

年和周数

Extract( unit From datetime)

unit取值:  year, quarter, month, week, day, hour, minute, second, microsecond

       year_month, day_hour, day_minute, day_second, day_microsecond, hour_minute, hour_second, hour_microsecond, minute_second, minute_microsecond, second_microsecond

xxx_zzz格式的值表示选取的范围xxxyyyzzz,而不是只选这两项。

DayOfWeek(datetime)

datetime是一周的第几天,(周日为一个星期的第一天,ODBC标准)

DayOfMonth(datetime)

datetime是一月的第几天,1-31

DayofYear(datetime)

datetime是一年的第几天,1-366

WeekDay(datetime)

datetime是一周中的第几天,(周一为一个星期的第0天)

WeekOfYear(datetime)

datetime是一年中的第几周,等于WEEK(datetime,3)。

Last_Day(date)

返回月份中最后一天

三、时间操作

+/-操作符

SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;  
-> 1998-01-01 00:00:00

SELECT INTERVAL 1 DAY + "1997-12-31";  
-> 1998-01-01

SELECT "1998-01-01" - INTERVAL 1 SECOND;  
-> 1997-12-31 23:59:59

Date_Add(datetime, interval expr unit)

unit:   day, hour, minute, second, microsecond, week, month, quarter, year

  year_month, day_hour, day_minute, day_second, day_microsecond, hour_minute, hour_second, hour_microsecond, minute_second, minute_microsecond, second_microsecond

xxx_zzz格式的值表示选取的范围xxxyyyzzz,而不是只选这两项。

示例:

select DATE_ADD(now(),INTERVAL 3 DAY)

select DATE_ADD(now(),INTERVAL -2.5 hour)

select DATE_ADD(now(),INTERVAL '01:15:30' hour_second)

select DATE_ADD(now(),INTERVAL '- 2 01:15:30' day_second)

AddDate(datetime, INTERVAL expr unit)

AddDate(datetime, days)

AddTime(expr1, expr2)

Date_Sub(datetime, interval expr unit)

用法同Date_Add(datetime, interval expr unit)

SubDate(datetime, INTERVAL expr unit)

SubDate(datetime, days)

SubTime(expr1, expr2)

timestampAdd(uint, interval, datetime_expr)

Period_Add(P,N)

增加N个月到阶段P,P的格式为YYMM或者YYYYMM

select PERIOD_ADD(9801,2);  -- 199803 

PERIOD_DIFF(P1,P2)

返回P1和P2相差的月数,P的格式为YYMM或者YYYYMM

DateDiff(datetime1, datetime2)

返回相差天数

TimeDiff(datetime1, datetime2)

返回相差时间(hh:mm:ss),两个参数格式必须相同

TimeStampDiff(unit,datetime1,datetime2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。

unit参数指定结果单位,可用值为:

  • FRAC_SECOND 毫秒
  • SECOND  秒
  • MINUTE  分钟
  • HOUR  小时
  • DAY  天
  • WEEK  星期
  • MONTH  月
  • QUARTER  季度
  • YEAR  年

示例语句:

SELECT TIMESTAMPDIFF(SECOND, '2012-12-21', CURRENT_TIMESTAMP()) AS `Second`;

SELECT * from autotesting_mobiledevice where TIMESTAMPDIFF(SECOND, MDLastSynchTime, NOW())<6000;

注意事项:

秒以上单位的时间差计算都是以秒为基础的。

天数的时间差是以24*60*60(86400)为依据的。假如相差间隔小于86400秒,则为0,如果>=86400秒且<86400*2秒,则为1。

如果单位为分钟,那么计算间隔分钟是以60秒为依据的。假如相差间隔小于60秒,则为0,如果>=60秒且<60*2秒,则为1。

select timestampdiff(day,"2012-08-22 15:15:15","2012-08-23 15:15:16");
1

select timestampdiff(day,"2012-08-22 15:15:17","2012-08-23 15:15:16");
0

三、时间转换

time_to_sec(datetime)

返回总秒数

sec_to_time(seconds)

to_days(date)

from_days(days)

makeDate(year,dayofyear)

makeTime(hour,minute,second)

str_to_date(str,format)

select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:3

format:

  %M 月名字(January……December)  
  %W 星期名字(Sunday……Saturday)  
  %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
  %Y 年, 数字, 4 位  
  %y 年, 数字, 2 位  
  %a 缩写的星期名字(Sun……Sat)  
  %d 月份中的天数, 数字(00……31)  
  %e 月份中的天数, 数字(0……31)  
  %m 月, 数字(01……12)  
  %c 月, 数字(1……12)  
  %b 缩写的月份名字(Jan……Dec)  
  %j 一年中的天数(001……366)  
  %H 小时(00……23)  
  %k 小时(0……23)  
  %h 小时(01……12)  
  %I 小时(01……12)  
  %l 小时(1……12)  
  %i 分钟, 数字(00……59)  
  %r 时间,12 小时(hh:mm:ss [AP]M)  
  %T 时间,24 小时(hh:mm:ss)  
  %S 秒(00……59)  
  %s 秒(00……59)  
  %p AM或PM  
  %w 一个星期中的天数(0=Sunday ……6=Saturday )  
  %U 星期(0……52), 这里星期天是星期的第一天  
  %u 星期(0……52), 这里星期一是星期的第一天  
  %% 一个文字“%”。  
  所有的其他字符不做解释被复制到结果中。

date_format(date,format)

time_format(time,format)

get_format(date|time|datetime, 'eur|usa|jis|iso|internal')

获取国家地区的时间格式

unix_timestamp()

返回自1970-1-1 0:00:00 UTC(因为中国是东八区,所以是8:00:00.)开始到当前系统时间为止的秒数

unix_timestamp(datetime)

早于1970-1-1 0:00:00 UTC的时间,返回0

from_unixTime(unix_timestamp)

字符串环境输出格式为:YYYY-MM-DD HH:MM:SS,数字环境输出格式为:YYYYMMDDHHMMSS

from_unixTime(unix_timestamp, format)

convert_tz(datetime, from_tz, to_tz)

时区转换,也可以通过date_add(),date_sub(),timestampadd()等函数实现

select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00

Mysql时间函数的更多相关文章

  1. MySQL时间函数,用起来比PHP还爽

    前一篇写了PHP的时间函数(还是草稿),这一篇就写Mysql的时间函数吧.最近做的项目,关乎权限,于是自然而然的就与有效期联系在了一起.其中有一个功能是生成特殊表格,可以根据用户的选择,按周.月.季. ...

  2. mysql 时间函数 时间转换函数

    时间函数 Now 获取当前时间 current_timestamp 获取当前时间 localtimestamp 时间转换 UNIX_TIMESTAMP    "2009-09-15 00:0 ...

  3. mysql时间函数和时间操作

    补 原文链接:http://blog.csdn.net/yuxiayiji/article/details/7480785 select timediff('23:40:00', ' 18:30:00 ...

  4. MySQL 时间函数加减计算

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...

  5. mysql 时间函数date_format

    http://toptree.iteye.com/blog/812642今天,在开发邮件系统的时候发现有很多的邮件没有发送成功,想手动把数据修改.找了mysql 的日期函数 获得的pubtime为St ...

  6. mysql时间函数操作

    Mysql时间转换函数 https://blog.csdn.net/w_qqqqq/article/details/88863269 mysql时间日期函数 https://www.cnblogs.c ...

  7. joda-time的简单使用及mysql时间函数的使用(今天,本周,本月)

    近期在做一些首页的统计数据复习了下mysql的时间函数,以及后续修改成 传入时间查询时使用的joda-time 软件简介 JodaTime 提供了一组Java类包用于处理包括ISO8601标准在内的d ...

  8. mysql 时间函数转换

    1 NOW() //当前时间 2 SYSDATE() //当前时间 3 CURRENT_TIMESTAMP 4 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的 ...

  9. mysql 时间函数总结

    1. 获取当前时间   select now(); // 2018-08-24 11:01:26   select unix_timestamp(); // 1535079695   总结:unix_ ...

随机推荐

  1. Linux C 单链表 读取文件 并排序 实例并解释

    C的指针挺头疼的,先看一个例子: 给指针赋值和通过指针进行赋值这两种操作的差别确实让人费解.谨记区分的重要方法是:如果对左操作数进行解引用,则修改的是指针所指对象的值:    如果没有使用解引用操作, ...

  2. tar -cvPf new.tar `rpm -ql vsftpd` 建议不要用绝对路径'/'

    tar -cvPf new.tar `rpm -ql vsftpd` 解压这样的压缩包,会在当前用户的家目录下解压:~./xxxx;加参数-C :tar -xvf xxx.tar -C /  ;来指定 ...

  3. linux rdsktop 运程管理 windows

    [root@ok ISO]# yum list |grep rdesktop rdesktop.x86_64 1.7.1-1.el6 base [root@ok ISO]# yum install r ...

  4. mac平台下面nodejs环境搭配

    方法一(pkg方式:下载链接http://nodejs.org/dist/v0.12.4/node-v0.12.4.pkg): 官网:https://nodejs.org/download/ 例子: ...

  5. hdu 1556 树状数组+点查询

    树状数组 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...

  6. 013_VM+WinDbg安装

    预计平均三天一课,录制过程中,大纲会实时更新(更改) 主讲:郁金香灬老师  QQ150330575 开发环境:VC6,VS2003,VS2008 www.yjxsoft.net www.yjxsoft ...

  7. 【HTML5】Web Workers

    什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...

  8. AsyncTask下载JSON

    public class HttpUtils { // 从网络url上下载字符串 public static String getHttpStr(String url) { HttpClient ht ...

  9. C. Graph and String

    二分图染色 b点跟除自身外所有的点连接,共n-1个,首先把连接n-1个的点全部设为b点,其它点任意一点设为a,与a相连的都是a点,剩余为c点.最后验证是否成立. 验证条件为,所有连接的点之间的差值的绝 ...

  10. PHP API 框架开发的学习

    基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用.对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户.开发者和中小网站带来了更大的 ...