没事整理下,方便以后查阅

一、     Mysql 获得当前日期时间

Now() : 获得当前的 日期+ 时间(date + time )函数:

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2011-03-01 10:26:23 |

+---------------------+

1 row in set (0.00 sec)

同等的函数还包括current_timestamp(),localtime() ,但是now() 最容易记忆,所以推荐使用。

Sysdate() : 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

看下面的例子就明白了:

mysql> select now(),sleep(3),now();

+---------------------+----------+---------------------+

| now()               | sleep(3) | now()               |

+---------------------+----------+---------------------+

| 2011-03-01 10:51:43 |        0 | 2011-03-01 10:51:43 |

+---------------------+----------+---------------------+

1 row in set (3.02 sec)

mysql> select sysdate(),sleep(3),sysdate();

+---------------------+----------+---------------------+

| sysdate()           | sleep(3) | sysdate()           |

+---------------------+----------+---------------------+

| 2011-03-01 10:52:09 |        0 | 2011-03-01 10:52:12 |

+---------------------+----------+---------------------+

1 row in set (3.00 sec)

可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒

也可以只取当前日期或者当前时间

Curdate(): 获得当前日期

mysql> select curdate();

+------------+

| curdate()  |

+------------+

| 2011-03-01 |

+------------+

1 row in set (0.01 sec)

Curtime() : 获得当前时间(time )函数

mysql> select curtime();

+-----------+

| curtime() |

+-----------+

| 10:55:12  |

+-----------+

1 row in set (0.00 sec)

二、     Mysql 日期时间的抽取extract

通过这一功能,我们可以从一个时间中抽取自己想要的部分,例如

mysql> set @ct='2011-03-01 11:16:14.123456';

Query OK, 0 rows affected (0.01 sec)

设置变量ct 为某一时间值,精确到微妙

获取其日期值

mysql> select date(@ct);

+------------+

| date(@ct)  |

+------------+

| 2011-03-01 |

+------------+

1 row in set (0.00 sec)

查看此日期所属季度

mysql> select quarter(@ct);

+--------------+

| quarter(@ct) |

+--------------+

|            1 |

+--------------+

1 row in set (0.00 sec)

查看此日期属于当年哪一周

mysql> select week(@ct);

+-----------+

| week(@ct) |

+-----------+

|         9 |

+-----------+

1 row in set (0.00 sec)

另外还有year(),day(),hour(),minute(),second() 等,在此不一一赘述。

采用extract() ,也可以实现类似的功能,语法格式为extract(year from @ct) ,

不足之处在于需要多敲几次键盘

Dayof 函数 :

Dayofweek(),dayofmonth(),dayofyear() 分别返回日期再一周、一月以及一年中的位置

mysql> select dayofweek(@ct);

+----------------+

| dayofweek(@ct) |

+----------------+

|              3 |

+----------------+

1 row in set (0.00 sec)

注意:其实3 月1 号是星期二,但是返回数字3 ,因为是从Sunday 开始算起的(1=Sunday,2=Monday, …)

mysql> select dayofmonth(@ct);

+-----------------+

| dayofmonth(@ct) |

+-----------------+

|               1 |

+-----------------+

1 row in set (0.00 sec)

mysql> select dayofyear(@ct);

+----------------+

| dayofyear(@ct) |

+----------------+

|             60 |

+----------------+

1 row in set (0.00 sec)

Week() 函数

查看日期属于当年的第几周

mysql> select weekofyear(@ct);

+-----------------+

| weekofyear(@ct) |

+-----------------+

|               9 |

+-----------------+

1 row in set (0.00 sec)

返回星期名和月份名的函数

Dayname() —计算日期是星期几

mysql> select dayname(@ct);

+--------------+

| dayname(@ct) |

+--------------+

| Tuesday      |

+--------------+

1 row in set (0.02 sec)

Monthname() —计算日期是哪一月

mysql> select monthname(@ct);

+----------------+

| monthname(@ct) |

+----------------+

| March          |

+----------------+

1 row in set (0.00 sec)

Last_day() : 返回月份中最后一天

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2011-03-01 13:15:00 |

+---------------------+

1 row in set (0.00 sec)

mysql> select last_day(now());

+-----------------+

| last_day(now()) |

+-----------------+

| 2011-03-31      |

+-----------------+

1 row in set (0.00 sec)

通过该函数,可以计算出当前月份有多少天

mysql> select now(),day(last_day(now())) ;

+---------------------+----------------------+

| now()               | day(last_day(now())) |

+---------------------+----------------------+

| 2011-03-01 13:17:12 |                   31 |

+---------------------+----------------------+

1 row in set (0.00 sec)

三、Mysql 的日期时间计算函数

Date_add() : 为日期增加一个时间间隔

具体语法为date_add(@ct, interval num year/quarter/month/week/day/hour/minute/secont/microsecond);

注意: 此函数并不改变变量@ct 的实际值

mysql> set @ct=now();

Query OK, 0 rows affected (0.00 sec)

mysql> select @ct;

+---------------------+

| @ct                 |

+---------------------+

| 2011-03-01 15:09:16 |

+---------------------+

1 row in set (0.00 sec)

mysql> select date_add(@ct,interval 1 day);

+------------------------------+

| date_add(@ct,interval 1 day) |

+------------------------------+

| 2011-03-02 15:09:16          |

+------------------------------+

1 row in set (0.00 sec)

mysql> select @ct;

+---------------------+

| @ct                 |

+---------------------+

| 2011-03-01 15:09:16 |

+---------------------+

1 row in set (0.00 sec)

mysql> select date_add(@ct,interval 1 week);

+-------------------------------+

| date_add(@ct,interval 1 week) |

+-------------------------------+

| 2011-03-08 15:09:16           |

+-------------------------------+

1 row in set (0.00 sec)

类似功能还有adddate(),addtime() 等函数,与之相对应的是date_sub() ,顾名思义就是日期减法

另类日期函数

Period_add(P,N): 日期加/ 减去N 月,其中P 的格式应为yyyymm 或yymm

Period_diff(P1,P2): 日期p1-p2 ,返回N 个月

mysql> select period_add(201103,2),period_add(201103,-2) ;

+----------------------+-----------------------+

| period_add(201103,2) | period_add(201103,-2) |

+----------------------+-----------------------+

|               201105 |                201101 |

+----------------------+-----------------------+

1 row in set (0.00 sec)

mysql> select period_diff('201103','201101');

+--------------------------------+

| period_diff('201103','201101') |

+--------------------------------+

|                              2 |

+--------------------------------+

1 row in set (0.00 sec)

日期时间相减函数

Datediff(date1,date2) : 两个日期date1-date2

mysql> select datediff('2011-03-09','2011-03-01');

+-------------------------------------+

| datediff('2011-03-09','2011-03-01') |

+-------------------------------------+

|                                   8 |

+-------------------------------------+

1 row in set (0.00 sec)

mysql> select datediff('2011-03-01','2011-03-09');

+-------------------------------------+

| datediff('2011-03-01','2011-03-09') |

+-------------------------------------+

|                                  -8 |

+-------------------------------------+

1 row in set (0.00 sec)

Timediff(time1,time2) : 两个时间相减

mysql> select timediff('2011-03-03 15:33:00','2011-03-02 15:33:59');

+-------------------------------------------------------+

| timediff('2011-03-03 15:33:00','2011-03-02 15:33:59') |

+-------------------------------------------------------+

| 23:59:01                                              |

+-------------------------------------------------------+

1 row in set (0.00 sec)

mysql> select timediff('15:33:00','15:33:59');

+---------------------------------+

| timediff('15:33:00','15:33:59') |

+---------------------------------+

| -00:00:59                       |

+---------------------------------+

1 row in set (0.00 sec)

四  mysql 日期、时间转换函数

Time_to_sec(time) : 时间—> 秒 转换函数

Sec_to_time(num) : 秒--> 时间 转换函数

mysql> select time_to_sec('01:00:00');

+-------------------------+

| time_to_sec('01:00:00') |

+-------------------------+

|                    3600 |

+-------------------------+

1 row in set (0.00 sec)

mysql> select sec_to_time(3600);

+-------------------+

| sec_to_time(3600) |

+-------------------+

| 01:00:00          |

+-------------------+

1 row in set (0.00 sec)

To_days(date) : 日期--> 天 转换函数 起始日期为0000-00-00

From_days(num) : 天--> 日期 将数字转换为具体的日期

mysql> select to_days('2011-03-01');

+-----------------------+

| to_days('2011-03-01') |

+-----------------------+

|                734562 |

+-----------------------+

1 row in set (0.00 sec)

mysql> select from_days(734562);

+-------------------+

| from_days(734562) |

+-------------------+

| 2011-03-01        |

+-------------------+

1 row in set (0.00 sec)

Str_to_date(str,date) : 字符串--> 日期 转换函数

可以将一些杂乱无章的字符转换为日期格式

mysql> select str_to_date('01.03.2011', '%m.%d.%Y');

+---------------------------------------+

| str_to_date('01.03.2011', '%m.%d.%Y') |

+---------------------------------------+

| 2011-01-03                            |

+---------------------------------------+

1 row in set (0.00 sec)

mysql> select str_to_date('01/03/2011', '%m/%d/%Y');

+---------------------------------------+

| str_to_date('01/03/2011', '%m/%d/%Y') |

+---------------------------------------+

| 2011-01-03                            |

+---------------------------------------+

1 row in set (0.00 sec)

小练习:

以表centralmobile_logs 为例,目前该表总共有270 多万条数据

mysql> select count(*) from centralmobile_logs;

+----------+

| count(*) |

+----------+

|  2725403 |

+----------+

1 row in set (0.00 sec)

现在对其做一些统计

查询过去30 天总共有多少数据

mysql> select count(*) from centralmobile_logs where to_days(curdate())- to_days(create_time)<=30;

+----------+

| count(*) |

+----------+

|  2367518 |

+----------+

1 row in set (3.38 sec)

mysql> select count(*) from centralmobile_logs where datediff(curdate(),create_time) <=30;

+----------+

| count(*) |

+----------+

|  2367518 |

+----------+

1 row in set (3.29 sec)

查看每月第一天的数据

mysql> select count(*) from centralmobile_logs where dayofmonth(create_time)=1;

+----------+

| count(*) |

+----------+

|   161293 |

+----------+

1 row in set (3.14 sec)

查看11 年1 月31 日之前的数据

mysql> select count(*) from centralmobile_logs where create_time <='2011-01-31 00:00:00';

+----------+

| count(*) |

+----------+

|   413797 |

+----------+

1 row in set (0.17 sec)

查看11 年整个二月份的数据

mysql> select count(*) from centralmobile_logs where monthname(create_time)='February' and year(create_time)=2011;

+----------+

| count(*) |

+----------+

|  2149284 |

+----------+

1 row in set (3.94 sec)

查看11 年每个周日的累积数据

mysql> select count(*) from centralmobile_logs where dayname(create_time)='Sunday' and year(create_time)=2011;

+----------+

| count(*) |

+----------+

|   479033 |

+----------+

1 row in set (3.88 sec)

查看每天零点时分插入的数据总和

mysql> select count(*) from centralmobile_logs where time(create_time)='00:00:00';

+----------+

| count(*) |

+----------+

|       37 |

+----------+

1 row in set (3.99 sec)

转载于:https://www.cnblogs.com/ATually/archive/2012/02/15/2352354.html

转:mysql的日期/时间函数相关推荐

  1. mysql 常用日期,时间函数

    mysql 常用日期,时间函数 转自: http://www.2cto.com/database/201307/230943.html MySQL常用时间函数   1.1 获得当前日期+时间(date ...

  2. mysql常用日期时间函数_MySql常用日期时间函数

    返回当前的日期和时间 select MICROSECOND(SYSDATE()); --0 select SECOND(SYSDATE()); --33 select MINUTE(SYSDATE() ...

  3. MySQL常用日期时间函数

    日期和时间函数 可能的需求: 当前时间是多少.下个月的今天是星期几.统计截止到当前日期前 3 天的收入总和-- 上述需求就需要使用日期和时间函数来实现: MySQL服务器中的三种时区设置: ①系统时区 ...

  4. 15.1.1、MySQL—mysql的日期时间函数,日期格式化

    1.日期(date)函数 返回当前日期:curdate(),current_date(),current_date 2.时间(time)函数 返回当前时间:curtime(),current_time ...

  5. MySQL之日期时间处理函数_MySQL之日期时间处理函数

    本文给大家分享的是MySQL之日期时间处理函数 ,非常的详细,也很实用,非常适合初学者,有需要的小伙伴参考下. 以下基本包含MySQL所有日期时间函数-- MySQL日期时间处理函数 -- 当前日期: ...

  6. MySQL 获得当前日期时间 函数

    MYSQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 ...

  7. MySQL 获得当前日期时间 函数

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

  8. mysql加减时间-函数-时间加减

    select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT   substring( timediff('23:40:00', ' 18:30: ...

  9. mysql里面的时间函数

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

最新文章

  1. Nancy in .Net Core学习笔记 - 初识Nancy
  2. 1.3 计划需求控制
  3. 大湾区菜篮子基地 谋定·农业大健康-林裕豪:从玉农业再次入选
  4. NgModule imports定义的运行时数据结构
  5. JavaScript中的运算符和语句
  6. python property函数_Python内置函数property()如何使用
  7. linux img提取文件系统,Linux下 mount IMG文件提示“您必须制定文件系统类型”解决方法...
  8. MySQL 8.0.11 中使用 grant ... identified by 时 error 1064 near 'identified by '密码'' at line 1...
  9. linux操作系统启动盘,轻松制作Linux操作系统启动盘的四种通行方法
  10. 遗传算法与TSP问题
  11. 数字电路基础知识——数字逻辑代数(逻辑代数基本定理及常用公式,最大项、最小项,公式法、卡洛图法及Q-M法化简(列表法)化简逻辑函数)
  12. Java程序员笔试面试之String5
  13. 台电固态硬盘用什么测试软件,台电固态硬盘怎么样(台电固态硬盘测评结果出炉 )...
  14. 计算机内部组成原理及内部子系统概述
  15. 创业失败的那些人都在干什么?是去打工了还是继续创业了。丨国仁网络资讯
  16. 七个实用的分布式开源框架
  17. GPG生成密钥对(Windows)及应用
  18. bps pps fps的定义
  19. 杭电OJ 1013 数字根源
  20. html和spwht表示什么状态,sⅠrcse中文是什么意思

热门文章

  1. 【深度学习】基于Pytorch的线性模型概念辨析和实现(二)
  2. Keras【Deep Learning With Python】机器学习和线性回归
  3. Android移动开发之【Android实战项目】DAY13-MPChart简单的折线图LineChart
  4. mysql sha1prng_Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException | 学步园...
  5. vue-video-player文档_vue的video插件vue-video-player
  6. react mysql增删改查_react增删改查
  7. 如何增加新站前期收录几率?
  8. jq选中单选框后文本框不可编辑_打开速度最快最强大的PDF免费工具,编辑+阅读功能一体...
  9. 安卓ttf格式的字体包_苹果官网御用字体
  10. php5.4版本不爆错误,PHP5.4以上版本出现的错误:Fatal error: Call-time pass-by-reference has been removed | 严佳冬...