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. HLJU 1046: 钓鱼(数据增强版) (贪心+优化)

    1046: 钓鱼(数据增强版) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 11  Solved: 3 [id=1046">Subm ...

  2. mysql执行计划介绍

    简单讲讲mysql的执行计划,只列出了一些常见的情况,希望对大家有所帮助   烂sql不仅直接影响sql的响应时间,更影响db的性能,导致其它正常的sql响应时间变长.如何写好sql,学会看执行计划至 ...

  3. 怎样设置linux中Tab键的宽度(可永久设置)

    和我的上篇文章一样,能够设置当前用户的Tab键宽度.也能够设置全部用户的Tab键宽度 一.仅设置当前用户的Tab键宽度 输入命令:vim ~/.vimrc 然后:set tabstop=4   //我 ...

  4. 使用VMware安装CentOS7步骤详情

    准备资料: CentOS-7-x86_64-Everything-1611 点击下载CentOS 对,资料就这些 第一步.  点击文件  再点击新建虚拟机 第二步 .点击完新建虚拟机之后会跳出一个窗口 ...

  5. spring整合kafka项目生产和消费测试结果记录(一)

    使用spring+springMVC+mybatis+kafka做了两个web项目,一个是生产者,一个是消费者. 通过JMeter测试工具模拟100个用户并发访问生产者项目,发送json数据给生产者的 ...

  6. C中fread()函数的返回值

    这个问题很容易搞错,并导致很多问题,需要强调的是fread函数返回的并不是字节数. realRead = fread(buf,item,count,fp)    (每次读item大小的数据块,分cou ...

  7. 基于html5整屏切换IDO智能手表页面滚动代码

    之前为大大家介绍了一款jquery实现的整屏切换特效.今天分享一款IDO智能手表页面滚动html5代码.这是一款基于jQuery+HTML5实现的页面滚动效果代码.效果图如下: 在线预览   源码下载 ...

  8. eclipse安装使用教程

    eclipse安装使用教程 很多人都知道要用eclipse来做java开发,但很多的新手朋友却不知道怎么下载和安装eclipse. 下面给你介绍一下怎么下载和安装eclipse来用于自己的学习或者项目 ...

  9. java-上传文件与现实上传文件

    项目结构: 项目展示: 数据库: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.53 : Database - fileupload ********* ...

  10. java-结合c3p0封装的db 事务 类

    将Connection对象,绑定到当前线程中去,这样在每一个方法中都能使用这个链接. DataSourceUtils.java package com.itheima.utils; import ja ...