1.查询当前日期时间:函数有now(),localtime(),current_timestamp(),sysdate()。

mysql> select now(),localtime(),current_timestamp(),sysdate();
+---------------------+---------------------+---------------------+---------------------+
| now() | localtime() | current_timestamp() | sysdate() |
+---------------------+---------------------+---------------------+---------------------+
| 2015-04-16 09:29:18 | 2015-04-16 09:29:18 | 2015-04-16 09:29:18 | 2015-04-16 09:29:18 |
+---------------------+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

但是now()与sysdate()有点差异的,一个语句中now()的值是不变的,而sysdate()是动态获取的,例如

mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2015-04-16 09:34:30 | 0 | 2015-04-16 09:34:30 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec) mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2015-04-16 09:35:15 | 0 | 2015-04-16 09:35:17 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec) -----有此结果可以看出,一般在生成环境中最好使用now(),当然也可以使用sysdate-is-now参数改变sysdate()的行为和now()一样------

2.获取当前日期,curdate()=current_date()=current_date

mysql> select curdate(),current_date(),current_date;
+------------+----------------+--------------+
| curdate() | current_date() | current_date |
+------------+----------------+--------------+
| 2015-04-16 | 2015-04-16 | 2015-04-16 |
+------------+----------------+--------------+
1 row in set (0.00 sec)

3.获取当前时间,curtime()=current_time()=current_time

mysql> select curtime(),current_time(),current_time;
+-----------+----------------+--------------+
| curtime() | current_time() | current_time |
+-----------+----------------+--------------+
| 09:42:17 | 09:42:17 | 09:42:17 |
+-----------+----------------+--------------+
1 row in set (0.00 sec)

4.获取UTC日期时间,utc_date(),utc_time(),utc_timestamp(),中国属于东八区,故+8小时即可

mysql> select utc_date(),utc_time(),utc_timestamp();
+------------+------------+---------------------+
| utc_date() | utc_time() | utc_timestamp() |
+------------+------------+---------------------+
| 2015-04-16 | 01:55:23 | 2015-04-16 01:55:23 |
+------------+------------+---------------------+
1 row in set (0.00 sec)

5.获取年,月,日

mysql> select year(now()),month(now()),day(now());
+-------------+--------------+------------+
| year(now()) | month(now()) | day(now()) |
+-------------+--------------+------------+
| 2015 | 4 | 16 |
+-------------+--------------+------------+
1 row in set (0.00 sec)

6.获取当前星期几,几月,以英文返回,dayname(),monthname()

mysql> select dayname(curdate()),monthname(curdate());
+--------------------+----------------------+
| dayname(curdate()) | monthname(curdate()) |
+--------------------+----------------------+
| Thursday | April |
+--------------------+----------------------+
1 row in set (0.03 sec)

7.获取某个日期在周,月,年中的位置,dayofweek(),dayofmonth,dayofyear(),如要返回中文周几,可以在程序中进行逻辑

mysql> set @d=now();
Query OK, 0 rows affected (0.03 sec) mysql> select dayofweek(@d),dayofmonth(@d),dayofyear(@d);
+---------------+----------------+---------------+
| dayofweek(@d) | dayofmonth(@d) | dayofyear(@d) |
+---------------+----------------+---------------+
| 5 | 16 | 106 |
+---------------+----------------+---------------+
1 row in set (0.03 sec)

8.获取一个月的最后一天,last_day(),利用它可以得到某个月有多少天

mysql> select last_day(@d),day(last_day(@d));
+--------------+-------------------+
| last_day(@d) | day(last_day(@d)) |
+--------------+-------------------+
| 2015-04-30 | 30 |
+--------------+-------------------+
1 row in set (0.00 sec)

9.获取某天位于一年中的第N周week(date,3)=weekofyear(),week()函数的第二个参数用来设定以星期几做为一周的开始

mysql> select week(@d,3),weekofyear(@d);
+------------+----------------+
| week(@d,3) | weekofyear(@d) |
+------------+----------------+
| 16 | 16 |
+------------+----------------+
1 row in set (0.00 sec)

10.获取两个日期或者两个时间的相差,datediff(),timediff()

mysql> select datediff(curdate(),'2015-02-15'),timediff(curtime(),'09:09:09')
+----------------------------------+--------------------------------+
| datediff(curdate(),'2015-02-15') | timediff(curtime(),'09:09:09') |
+----------------------------------+--------------------------------+
| 60 | 01:21:20 |
+----------------------------------+--------------------------------+
1 row in set (0.05 sec)

11.为日期加上或减去一个间隔,date_add(),date_sub()

mysql> select date_add(curdate(),interval 1 day),date_sub(curdate(),interval 1 day);
+------------------------------------+------------------------------------+
| date_add(curdate(),interval 1 day) | date_sub(curdate(),interval 1 day) |
+------------------------------------+------------------------------------+
| 2015-04-17 | 2015-04-15 |
+------------------------------------+------------------------------------+
1 row in set (0.03 sec) mysql> select date_add(@d,interval '01:15:09' hour_second),date_sub(@d,interval '01:15:09' hour_second);
+----------------------------------------------+----------------------------------------------+
| date_add(@d,interval '01:15:09' hour_second) | date_sub(@d,interval '01:15:09' hour_second) |
+----------------------------------------------+----------------------------------------------+
| 2015-04-16 11:21:42 | 2015-04-16 08:51:24 |
+----------------------------------------------+----------------------------------------------+
1 row in set (0.00 sec)

12.时间与秒的转换,time_to_sec(),sec_to_time()

mysql> select time_to_sec(@d),sec_to_time(12389);
+-----------------+--------------------+
| time_to_sec(@d) | sec_to_time(12389) |
+-----------------+--------------------+
| 36393 | 03:26:29 |
+-----------------+--------------------+
1 row in set (0.00 sec)

13.日期与天数的转换,to_days(),from_days()

mysql> select to_days(@d),from_days(1460000);
+-------------+--------------------+
| to_days(@d) | from_days(1460000) |
+-------------+--------------------+
| 736069 | 3997-05-06 |
+-------------+--------------------+
1 row in set (0.00 sec)

14.字符串转换为日期,str_to_date(date,format)

mysql> select str_to_date('09/09/20','%Y/%m/%d');
+------------------------------------+
| str_to_date('09/09/20','%Y/%m/%d') |
+------------------------------------+
| 2009-09-20 |
+------------------------------------+
1 row in set (0.00 sec) mysql> select str_to_date('09.09.20','%Y.%m.%d');
+------------------------------------+
| str_to_date('09.09.20','%Y.%m.%d') |
+------------------------------------+
| 2009-09-20 |
+------------------------------------+
1 row in set (0.00 sec)

format标志含义:

%a Abbreviated weekday name (Sun..Sat)
%b Abbreviated month name (Jan..Dec)
%c Month, numeric (0..12)
%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
%d Day of the month, numeric (00..31)
%e Day of the month, numeric (0..31)
%f Microseconds (000000..999999)
%H Hour (00..23)
%h Hour (01..12)
%I Hour (01..12)
%i Minutes, numeric (00..59)
%j Day of year (001..366)
%k Hour (0..23)
%l Hour (1..12)
%M Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r Time, 12-hour (hh:mm:ss followed by AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%U Week (00..53), where Sunday is the first day of the week
%u Week (00..53), where Monday is the first day of the week
%V Week (01..53), where Sunday is the first day of the week; used with %X
%v Week (01..53), where Monday is the first day of the week; used with %x
%W Weekday name (Sunday..Saturday)
%w Day of the week (0=Sunday..6=Saturday)
%X Year for the week where Sunday is the first day of the week, numeric, four digits;
used with %V
%x Year for the week, where Monday is the first day of the week, numeric, four
digits; used with %v
%Y Year, numeric, four digits
%y Year, numeric (two digits)
%% A literal “%” character
%x x, for any “x” not listed above

15.日期格式化,date_format(str,format)

mysql> select date_format('09.09.20','%Y:%m:%d');
+------------------------------------+
| date_format('09.09.20','%Y:%m:%d') |
+------------------------------------+
| 2009:09:20 |
+------------------------------------+
1 row in set (0.00 sec)

16.日期/时间拼凑,makedate(year,dayofyear),maketime(hour,minute,second)

mysql> select makedate(2015,200),maketime(13,20,15);
+--------------------+--------------------+
| makedate(2015,200) | maketime(13,20,15) |
+--------------------+--------------------+
| 2015-07-19 | 13:20:15 |
+--------------------+--------------------+
1 row in set (0.00 sec)

17.unix时间戳,时间戳转换等,unix_timestamp(date),timestamp(date)

mysql> select unix_timestamp(),unix_timestamp('2009-09-09'),timestamp(now());
+------------------+------------------------------+---------------------+
| unix_timestamp() | unix_timestamp('2009-09-09') | timestamp(now()) |
+------------------+------------------------------+---------------------+
| 1429153960 | 1252425600 | 2015-04-16 11:12:40 |
+------------------+------------------------------+---------------------+
1 row in set (0.00 sec)

18.在应用中碰到需要比较日期时,比如获取某一天的数据,不能使用“=”等于号来比较,使用"<>",比如

select * from users where regDate<'2009-10-23' and regDate>='2009-10-22' //如果使用regDate='2009-10-22'相当于00:00:00

19.知道用户的生日得到年龄

mysql> select year(curdate())-year('1990-07-30')-(right(curdate(),5)<right('1990-07-30',5)) as age;
+------+
| age |
+------+
| 24 |
+------+
1 row in set (0.05 sec)

MySQL 日期与时间的处理的更多相关文章

  1. MySQL 日期、时间转换函数

    MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...

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

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

  3. MySQL日期和时间函数

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

  4. MySql日期与时间函数

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

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

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

  6. mysql日期和时间类型

    TIME 类型 TIME 类型用于只需要时间信息的值,在存储时需要 3 个字节.格式为 HH:MM:SS.HH 表示小时,MM 表示分钟,SS 表示秒. TIME 类型的取值范围为 -838:59:5 ...

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

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

  8. MySQL日期和时间类型笔记

    最近在看<MySQL技术内幕:SQL编程>并做了笔记,这是一篇笔记类型博客,分享出来方便自己复习,也可以帮助其他人 一.日期时间类型所占空间对比 各种日期时间数据类型所占的空间: 类型 所 ...

  9. MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下.   MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型    ...

随机推荐

  1. 子墨庖丁Android的ActionBar源代码分析 (一)实例化

    假设你从事过Androidclient开发,相信你对ActionBar这套框架并不陌生,或者说你并不了解它,可是你应该时不时的要跟它打交道.抛开ActionBar的实现不说,ActionBar实际上是 ...

  2. Python并发编程实例教程

    有关Python中的并发编程实例,主要是对Threading模块的应用,文中自定义了一个Threading类库. 一.简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态 ...

  3. [na]ppp协议链路认证-chap认证流程

    Point-to-Point Protocol (PPP)协议是广域网链路的一种协议,不同于局域网的ethernetII协议 PPP协商过程,分三步:LCP.认证.NCP. 一 协议概述 PPP包含以 ...

  4. hdoj2037 今年暑假不AC

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  5. 一款纯css实现的漂亮导航

    今天给大家分享一款纯css实现的漂亮导航.之前为大家分享过jquery实现的个人中心导航菜单,今天这款也是适合放在个人中心.还带来图标,效果不错.一起看下效果图: 在线预览   源码下载 实现的代码. ...

  6. Tomcat (1) —— Mac下配置Tomcat Https/SSL

    Tomcat (1) -- Mac下配置Tomcat Https/SSL tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 参考来源: SSL/TLS Config ...

  7. Python高级编程之生成器(Generator)与coroutine(四):一个简单的多任务系统

    啊,终于要把这一个系列写完整了,好高兴啊 在前面的三篇文章中介绍了Python的Python的Generator和coroutine(协程)相关的编程技术,接下来这篇文章会用Python的corout ...

  8. Nutch系列1:简介

    由Java实现的,开放源代码(open-source)的web搜索引擎. Nutch 致力于让每个人都能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch ...

  9. kcp协议详解

    kcp协议是传输层的一个具有可靠性的传输层ARQ协议.它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题.kcp力求在保证可靠性的情况下提高传输速度.kcp协议的关注点主要在控制数据的可靠 ...

  10. 重点:怎样正确的使用QThread类(注:包括推荐使用QThread线程的新方法QObject::moveToThread)

    背景描述: 以前,继承 QThread 重新实现 run() 函数是使用 QThread唯一推荐的使用方法.这是相当直观和易于使用的.但是在工作线程中使用槽机制和Qt事件循环时,一些用户使用错了.Qt ...