iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql 常用时间函数(上)
  • 308
分享到

Mysql 常用时间函数(上)

摘要

也是做数据分析嘛, sql 必然是每天都要用的, 然后在分析中, 时间是数据分析中极为重要的部分, 可以说是承上启下或者是贯穿整个分析. 比如, 日, 周, 月, 季度, 年度 与之相对应的 环比, 同比 等基础指标都是与时间相关的, 其重


	Mysql 常用时间函数(上)
[数据库教程]

也是做数据分析嘛, sql 必然是每天都要用的, 然后在分析中, 时间是数据分析中极为重要的部分, 可以说是承上启下或者是贯穿整个分析. 比如, 日, 周, 月, 季度, 年度 与之相对应的 环比, 同比 等基础指标都是与时间相关的, 其重要性可见一斑. 虽然各个主流的商业数据库写法有差异, 但基本都差不多的, 这里就用 Mysql 作为演示了, 虽然主要用 IQ Sybase 这个列数据库更多一些.

然而往往这些时间字段, 都质量不高, 需要额外去处理, 比如, 字符串时间, 精确到秒的时间, 时间需要提取, 时间需要计算, 周, 月等各种操作. 每次是现查, 于是这里打算来小小整理一波, 也是做个笔记方便自己查. 就好比今天有个面谈, 问我 SVM 的目标函数, 推导啥的, 我的确是一点点推导过的, 但现场就是忘了, 一点也想不起来, 我觉得也没关系, 看下自己笔记, 然后一行行公式解释出来, 也是可以的嘛, 都是自己的笔记, 为啥就不能查阅下呢,面谈来整, 确实有点压力哦...

当前时刻 now()

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-07-16 23:30:15 |
+---------------------+
1 row in set (0.00 sec)

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 23:30:09  |
+-----------+
1 row in set (0.00 sec)

当前日期 年-月-日 curdate( )

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2020-07-16 |
+------------+
1 row in set (0.00 sec)

将字符串时间转为 年-月-日 date( )

mysql> select date(‘2020-07-16‘);
+--------------------+
| date(‘2020-07-16‘) |
+--------------------+
| 2020-07-16         |
+--------------------+
mysql> select date(‘2020-07-16 22:22:22‘);
+-----------------------------+
| date(‘2020-07-16 22:22:22‘) |
+-----------------------------+
| 2020-07-16                  |
+-----------------------------+
1 row in set (0.00 sec)

时间转字符串 date_format()

mysql> select date_fORMat(now(), ‘%Y-%m-%d‘);
+--------------------------------+
| date_format(now(), ‘%Y-%m-%d‘) |
+--------------------------------+
| 20-07-16                       |
+--------------------------------+
1 row in set (0.00 sec)

字符串转时间 str_to_date()

+------------------------------------------+
| str_to_date(‘2016-01-02‘, ‘%Y-%m-%d %H‘) |
+------------------------------------------+
| 2016-01-02 00:00:00                      |
+------------------------------------------+
1 row in set (0.00 sec)

时间 / 时间戳互转

mysql> select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
|            1594914762 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select from_unixtime(1594914762);
+---------------------------+
| from_unixtime(1594914762) |
+---------------------------+
| 2020-07-16 23:52:42       |
+---------------------------+
1 row in set (0.02 sec)

字符串 / 时间戳互转

mysql> select unix_timestamp(‘2020-07-16‘);
+------------------------------+
| unix_timestamp(‘2020-07-16‘) |
+------------------------------+
|                   1594828800 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select from_unixtime(1594828800, ‘%Y-%d‘);
+------------------------------------+
| from_unixtime(1594828800, ‘%Y-%d‘) |
+------------------------------------+
| 2020-16                            |
+------------------------------------+
1 row in set (0.00 sec)

mysql> select from_unixtime(1594828800, ‘%Y-%m-%d‘);
+---------------------------------------+
| from_unixtime(1594828800, ‘%Y-%m-%d‘) |
+---------------------------------------+
| 2020-07-16                            |
+---------------------------------------+
1 row in set (0.00 sec)

给时间加一个增量 date_add( ) 和 adddate( )

  • ADDDATE(date, INTERVAL expr, unit)
mysql> select date_add(‘2020-07-16‘, interval 10 day);
+-----------------------------------------+
| date_add(‘2020-07-16‘, interval 10 day) |
+-----------------------------------------+
| 2020-07-26                              |
+-----------------------------------------+
mysql> select date_add(‘2020-07-16‘, interval 1 week);
+-----------------------------------------+
| date_add(‘2020-07-16‘, interval 1 week) |
+-----------------------------------------+
| 2020-07-23                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(‘2020-07-16‘, interval 1 month);
+------------------------------------------+
| date_add(‘2020-07-16‘, interval 1 month) |
+------------------------------------------+
| 2020-08-16                               |
+------------------------------------------+
1 row in set (0.00 sec)

如果不指定时间间隔, 则默认单位为 day

+-------------------------+
| adddate(‘2020-7-16‘, 4) |
+-------------------------+
| 2020-07-20              |
+-------------------------+
1 row in set (0.00 sec)

mysql> select adddate(curdate(), 4);
+-----------------------+
| adddate(curdate(), 4) |
+-----------------------+
| 2020-07-20            |
+-----------------------+
1 row in set (0.00 sec)

加法和减法, 其实都是加法.

mysql> select adddate(curdate(), -4);
+------------------------+
| adddate(curdate(), -4) |
+------------------------+
| 2020-07-12             |
+------------------------+
1 row in set (0.02 sec)

mysql> select adddate(curdate(), -33);
+-------------------------+
| adddate(curdate(), -33) |
+-------------------------+
| 2020-06-13              |
+-------------------------+
1 row in set (0.00 sec)

一定要写减, 用 date_sub(date, INTERVAL expr unit) 也行, 强迫症的话.

mysql> select date_sub(‘2020-7-16‘, interval 4 day);
+---------------------------------------+
| date_sub(‘2020-7-16‘, interval 4 day) |
+---------------------------------------+
| 2020-07-12                            |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> select date_sub(‘2020-7-16‘,  interval 33 day);
+-----------------------------------------+
| date_sub(‘2020-7-16‘,  interval 33 day) |
+-----------------------------------------+
| 2020-06-13                              |
+-----------------------------------------+
1 row in set (0.00 sec)

计算日期是当年的第几周 week( )

  • week(date, mode)
mysql> select week(‘2020-01-05‘);
+--------------------+
| week(‘2020-01-05‘) |
+--------------------+
|                  1 |
+--------------------+
1 row in set (0.00 sec)

mysql> select week(date(‘2020-01-05‘));
+--------------------------+
| week(date(‘2020-01-05‘)) |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

mysql 是正常的, 一周是从 周1 到周天. 而像 IQ Sybase 就是西式的. 然后要自己写一个 case when.

-- IQ
set datefirst 1; 
select 
	case 
		when datepart(weekday, 日期字段) = 7 
			then datepart(week, dateadd(day, -1, 日期字段)) 
		else 
			datepart(week, 日期字段)
	end as date_week	
	

日期是周几 dayname(date) 和 dayofweek(date)

mysql> select dayname(‘2020-07-16‘);
+-----------------------+
| dayname(‘2020-07-16‘) |
+-----------------------+
| Thursday              |
+-----------------------+
1 row in set (0.00 sec)

mysql> select dayofweek(‘2020-07-16‘);
+-------------------------+
| dayofweek(‘2020-07-16‘) |
+-------------------------+
|                       5 |
+-------------------------+
1 row in set (0.00 sec)

这个返回天还是有点问题, 中国人看应该返回 4 才对, 它又是从 周天开始算的, 我有点懵逼...

**日期是一月 or 年的第多少天 dayofmonth(); dayofyear(); **

mysql> select dayofmonth(‘2020/7/16‘);
+-------------------------+
| dayofmonth(‘2020/7/16‘) |
+-------------------------+
|                      16 |
+-------------------------+
1 row in set (0.00 sec)

mysql> select dayofyear(‘2020-7-16‘);
+------------------------+
| dayofyear(‘2020-7-16‘) |
+------------------------+
|                    198 |
+------------------------+
1 row in set (0.00 sec)

计算两个日期的差 datediff ( )

  • datediff (data_01, date_02) 返回 date_01 - date_02 相差的天数
mysql> select datediff(‘2020-7-16‘, ‘2020-07-01‘);
+-------------------------------------+
| datediff(‘2020-7-16‘, ‘2020-07-01‘) |
+-------------------------------------+
|                                  15 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> select datediff(‘2020-7-16‘, ‘2020-07-20‘);
+-------------------------------------+
| datediff(‘2020-7-16‘, ‘2020-07-20‘) |
+-------------------------------------+
|                                  -4 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> select datediff(‘2020-7-16‘, ‘2020-01-1‘);
+------------------------------------+
| datediff(‘2020-7-16‘, ‘2020-01-1‘) |
+------------------------------------+
|                                197 |
+------------------------------------+
1 row in set (0.00 sec)

计算日期当月的最后一天 last_day(date)

mysql> select last_day(‘2020-07-16‘);
+------------------------+
| last_day(‘2020-07-16‘) |
+------------------------+
| 2020-07-31             |
+------------------------+
1 row in set (0.00 sec)

mysql> select last_day(now());
+-----------------+
| last_day(now()) |
+-----------------+
| 2020-07-31      |
+-----------------+
1 row in set (0.00 sec)

mysql> select last_day(‘2020-2-1‘);
+----------------------+
| last_day(‘2020-2-1‘) |
+----------------------+
| 2020-02-29           |
+----------------------+
1 row in set (0.00 sec)

Mysql 常用时间函数(上)

原文地址:https://www.cnblogs.com/chenjieyouge/p/13326590.html

您可能感兴趣的文档:

--结束END--

本文标题: Mysql 常用时间函数(上)

本文链接: https://www.lsjlt.com/news/7233.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql 常用时间函数(上)
    也是做数据分析嘛, SQL 必然是每天都要用的, 然后在分析中, 时间是数据分析中极为重要的部分, 可以说是承上启下或者是贯穿整个分析. 比如, 日, 周, 月, 季度, 年度 与之相对应的 环比, 同比 等基础指标都是与时间相关的, 其重...
    99+
    2014-09-11
    Mysql 常用时间函数(上) 数据库入门 数据库基础教程 数据库 mysql
  • MySQL常用的日期时间函数
    目录 1.日期(date)函数 2.时间(time)函数 3.日期和时间函数 4.日期和时间比较 5.日期和时间运算 6.日期和时间的格式化 1.日期(date)函数 返回当前日期:CURDATE(), CURRENT_DATE(),...
    99+
    2023-09-11
    sql 数据库 database mysql
  • MySQL常用的日期/时间函数
    MySQL 中常用的日期/时间函数使用方法: CURDATE() :该函数返回当前日期,格式为 YYYY-MM-DD ,例如: SELECT CURDATE(); 输出结果为当前日期,例如 2023-05-21 。 NOW() :该函数...
    99+
    2023-09-08
    mysql 数据库 sql
  • 常用MySQL日期时间处理函数
    常用MySQL日期时间处理函数 FROM_UNIXTIME FROM_UNIXTIME(unix_timestamp[,format]) 将时间戳转换成日期时间表示。如"YYYY-MM-DD hh:m...
    99+
    2022-03-07
    常用MySQL日期时间处理函数
  • mysql几个常用的时间函数整理
    这篇文章主要介绍“mysql几个常用的时间函数整理”,在日常操作中,相信很多人在mysql几个常用的时间函数整理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql几个常...
    99+
    2022-10-18
  • MySQL 时间函数
    A. timestampdiff() 传三个参数,第一个时间类型如年,月,日,第二个开始时间,第三个结束时间select test_name, timestampdiff(YEAR,cre...
    99+
    2022-10-18
  • MySQL常用的日期时间函数有哪些
    本文小编为大家详细介绍“MySQL常用的日期时间函数有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL常用的日期时间函数有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.日期(date)函数返...
    99+
    2023-07-05
  • MYSQL时间函数方用法
    本篇内容介绍了“MYSQL时间函数方用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!测试表:root@t...
    99+
    2022-10-18
  • MySQL常用的日期时间函数汇总(附实例)
    目录1.日期(date)函数2.时间(time)函数3.日期和时间函数4.日期和时间比较5.日期和时间运算6.日期和时间的格式化总结1.日期(date)函数 返回当前日期:CURDATE(), CURRENT_DATE(...
    99+
    2023-03-01
    mysql日期函数怎么用 MySQL日期函数 MySQL 获取当前日期
  • Oracle计算时间差常用函数
    Oracle计算时间差常用函数两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):天:ROUND(TO_NUMBER(END_DATE -...
    99+
    2022-10-18
  • MYSQL 时间日期函数的用法
    mysql日期时间函数比较多,总结一些比较重要的函数,now(),curdate(),curtime(),date_add(),datediff(),date_format(),下面详细介绍其用法和输出的结...
    99+
    2022-10-18
  • mysql函数日期和时间函数汇总
    目录前言获取当前日期的函数获取当前时间的函数获取当前日期和时间的函数Unix时间戳函数返回UTC日期的函数返回UTC时间的函数获取月份的函数MONTH(date)和MONTHNAME(date)获取星期的函数DAYNAM...
    99+
    2022-07-26
    mysql日期函数 mysql时间函数
  • Python常用时间操作总结【取得当前时间、时间函数、应用等】
    本文实例讲述了Python常用时间操作。分享给大家供大家参考,具体如下: 我们先导入必须用到的一个module >>> import time 设置一个时间的格式,下面会用到 ...
    99+
    2022-06-04
    时间 函数 常用
  • Mysql中时间函数有哪些
    Mysql中时间函数有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于每个类型拥有的值范围以及并且指定日期何时间值的有效...
    99+
    2022-10-18
  • mysql中有哪些时间函数
    mysql中有哪些时间函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 获得当前日期+时间(d...
    99+
    2022-10-18
  • Mysql的时间函数有哪些
    小编给大家分享一下Mysql的时间函数有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! mysql 的时间函数很丰富  1....
    99+
    2022-10-19
  • MySQL时间函数怎么正确使用
    MySQL中有很多时间函数,可以对日期和时间进行各种操作和计算。下面是一些常用的MySQL时间函数及其正确使用方法:1. NOW()...
    99+
    2023-08-15
    MySQL
  • SqlServer常用函数及时间处理小结
    YEAR() 函数返回一个整数值,它表示指定日期的年份,一般使用为:Year(时间),如: YEAR('2023-03-14 16:50:08.543')--2023 REPLACE() 字符串替换函...
    99+
    2023-05-05
    SqlServer常用函数 SqlServer时间函数
  • MySQL中时间函数操作大全
    目录1. 获取系统当前时间1.1. 获取 YYYY-MM-DD HH:mm:ss1.2. 获取 YYYY-MM-DD1.3. 获取 HH:mm:ss2. 时间加减间隔函数2.1. DATETIME 类型的加减2.2. D...
    99+
    2022-08-08
    MySQL时间函数 mysql获取系统时间函数 SQL时间函数
  • php时间戳转换常用函数有哪些
    这篇“php时间戳转换常用函数有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php时间戳转换常用函数有哪些”文章吧。一...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作