我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql 常用时间函数(上)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql 常用时间函数(上)


	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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql 常用时间函数(上)

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

下载Word文档

猜你喜欢

Mysql 常用时间函数(上)

也是做数据分析嘛, SQL 必然是每天都要用的, 然后在分析中, 时间是数据分析中极为重要的部分, 可以说是承上启下或者是贯穿整个分析. 比如, 日, 周, 月, 季度, 年度 与之相对应的 环比, 同比 等基础指标都是与时间相关的, 其重要性可见一斑. 虽
Mysql 常用时间函数(上)
2014-09-11

常用MySQL日期时间处理函数

常用MySQL日期时间处理函数 FROM_UNIXTIMEFROM_UNIXTIME(unix_timestamp[,format])将时间戳转换成日期时间表示。如"YYYY-MM-DD hh:mm:ss" 或 YYYYMMDDhhmmssNOW
常用MySQL日期时间处理函数
2022-03-07

MySQL常用的日期时间函数有哪些

本文小编为大家详细介绍“MySQL常用的日期时间函数有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL常用的日期时间函数有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.日期(date)函数返
2023-07-05

MySQL常用的日期时间函数汇总(附实例)

目录1.日期(date)函数2.时间(time)函数3.日期和时间函数4.日期和时间比较5.日期和时间运算6.日期和时间的格式化总结1.日期(date)函数返回当前日期:CURDATE(), CURRENT_DATE(), CURRENT
2023-03-01

常用MySQL函数

字符函数#字符拼接CONCAT(‘%‘,‘abc‘);#函数返回subStr在str中出现的位置(返回结果从1开始,0表示不存在)locate(subStr,str);#截取字符串(截取下标从1开始,负数表示右边)SUBSTRING(sub,2)日期函数#日期

	常用MySQL函数
2015-08-12

mysql常用函数

1、数学函数ABS(x) 返回 x 的绝对值BIN(x) 返回 x 的二进制(OCT 返回八进制,HEX 返回十六进制)CEILING(x)返回大于 x 的最小整数值EXP(x)返回值 e(自然对数的底)的 x 次方FLOOR(x)返回小于 x 的最大整数值G
mysql常用函数
2015-07-29

mysql时间戳函数怎么使用

MySQL有几个内置的函数可以用来处理时间戳:UNIX_TIMESTAMP()函数:将一个日期或日期时间表达式转换为一个UNIX时间戳,即从1970年1月1日至给定日期的秒数。示例:SELECT UNIX_TIMESTAMP(‘2021-0
mysql时间戳函数怎么使用
2024-04-09

Python常用时间操作总结【取得当前时间、时间函数、应用等】

本文实例讲述了Python常用时间操作。分享给大家供大家参考,具体如下: 我们先导入必须用到的一个module>>> import time设置一个时间的格式,下面会用到>>>ISOTIMEFORMAT='%Y-%m-%d %X'看一下当前
2022-06-04

SqlServer常用函数及时间处理小结

YEAR() 函数返回一个整数值,它表示指定日期的年份,一般使用为:Year(时间),如:YEAR('2023-03-14 16:50:08.543')--2023REPLACE() 字符串替换函数,一般使用为:REPLACE(被搜索字
2023-05-05

mysql函数日期和时间函数汇总

目录前言获取当前日期的函数获取当前时间的函数获取当前日期和时间的函数Unix时间戳函数返回UTC日期的函数返回UTC时间的函数获取月份的函数MONTH(date)和MONTHNAME(date)获取星期的函数DAYNAME(d)、DAYOF
2022-07-26

MySQL时间函数怎么正确使用

MySQL中有很多时间函数,可以对日期和时间进行各种操作和计算。下面是一些常用的MySQL时间函数及其正确使用方法:1. NOW():返回当前日期和时间。例如:SELECT NOW();2. CURDATE():返回当前日期。例如:SELE
2023-08-15

编程热搜

目录