MySQL日期与时间函数

MySQL日期与时间函数

这里写图片描述

MySQL服务器中的三种时区设置:
  ①系统时区—保存在系统变量system_time_zone
  ②服务器时区—保存在全局系统变量global.time_zone
  ③每个客户端连接的时区—保存在会话变量session.time_zone
注意:
  客户端时区的设置会影响一些日期函数返回值的显示,例如:now()、curtime()、curdate(),也影响timestamp列值的显示。
  默认情况下,客户端和服务器的时区相同,其值为SYSTEM,表示使用系统时区。

mysql> select @@global.time_zone,@@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+
row in set (0.00 sec)mysql> show variables like 'system_time_zone';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| system_time_zone | CST   |
+------------------+-------+
row in set (0.28 sec)

1、NOW([fsp])

  返回服务器的当前日期和时间(fsp指定小数秒的精度,取值0–6)

  格式:‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’

//now()的显示格式是‘YYYY-MM-DD HH:MM:SS’
//now()+0的显示格式是‘YYYYMMDDHHMMSS’mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-03-24 13:53:34 |
+---------------------+mysql> select now()+0;
+----------------+
| now()+0        |
+----------------+
| 20170324135428 |
+----------------+mysql> select now(6);  //指定小数秒的精度
+----------------------------+
| now(6)                     |
+----------------------------+
| 2017-04-19 19:55:46.658198 |
+----------------------------+

注意:

  SYSDATE( ):返回服务器的当前日期和时间

与now的不同点:(一般使用NOW而不用SYSDATE)

  ①SYSDATE()返回的是函数执行时的时间

  ②now()返回的是语句执行时的时间

mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now()               | sleep(2) | now()               |
+---------------------+----------+---------------------+
| 2017-04-19 20:01:39 |        0 | 2017-04-19 20:01:39 |
+---------------------+----------+---------------------+
row in set (2.00 sec)mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate()           | sleep(2) | sysdate()           |
+---------------------+----------+---------------------+
| 2017-04-19 20:02:01 |        0 | 2017-04-19 20:02:03 |
+---------------------+----------+---------------------+
row in set (2.05 sec)

2、CURTIME([fsp]):返回当前时间,只包含时分秒(fsp指定小数秒的精度,取值0–6)

  格式:‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’

mysql> select curtime(),curtime(2);
+-----------+-------------+
| curtime() | curtime(2)  |
+-----------+-------------+
| 14:35:23  | 14:35:23.90 |
+-----------+-------------+

3、CURDATE():返回当前日期,只包含年月日

  格式:‘YYYY-MM-DD’或者‘YYYYMMDD’

mysql> select curdate(),curdate()+2;
+------------+-------------+
| curdate()  | curdate()+2 |
+------------+-------------+
| 2017-03-24 |    20170326 |
+------------+-------------+mysql> select curdate(),curdate()+0;
+------------+-------------+
| curdate()  | curdate()+0 |
+------------+-------------+
| 2017-03-24 |    20170324 |
+------------+-------------+

4、TIMEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的时间数(两个参数类型必须相同)

mysql> select timediff('18:32:59','60000');
+------------------------------+
| timediff('18:32:59','60000') |
+------------------------------+
| 12:32:59                     |
+------------------------------+mysql> select timediff('18:32:59','2017-1-1 60000');
+---------------------------------------+
| timediff('18:32:59','2017-1-1 60000') |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

DATEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的天数

mysql> select datediff('2017-3-24 18:32:59','2016-9-1');
+-------------------------------------------+
| datediff('2017-3-24 18:32:59','2016-9-1') |
+-------------------------------------------+
|                                       204 |
+-------------------------------------------+

5、日期时间运算函数:分别为给定的日期date加上(add)或减去(sub)一个时间间隔值expr

格式:

  DATE_ADD(date, INTERVAL expr unit);

  DATE_SUB(date, INTERVAL expr unit);

  interval是间隔类型关键字

  expr是一个表达式,对应后面的类型

  unit是时间间隔的单位(间隔类型)(20个),如下:

   HOUR         小时
   MINUTE        分
   SECOND        秒
   MICROSECOND    毫秒
   YEAR         年
   MONTH        月
   DAY          日
   WEEK         周
   QUARTER       季
   YEAR_MONTH     年和月
   DAY_HOUR       日和小时
   DAY_MINUTE      日和分钟
   DAY_ SECOND     日和秒
   HOUR_MINUTE     小时和分
   HOUR_SECOND    小时和秒
   MINUTE_SECOND    分钟和秒

mysql> select now(),date_add(now(),interval 1 day);  #加一天
+---------------------+--------------------------------+
| now()               | date_add(now(),interval 1 day) |
+---------------------+--------------------------------+
| 2017-03-24 14:53:08 | 2017-03-25 14:53:08            |
+---------------------+--------------------------------+mysql> SELECT date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND);  #减1天1小时1分1秒
+---------------------------------------------------------------+
| date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND) |
+---------------------------------------------------------------+
| 2004-12-30 22:58:59                                           |
+---------------------------------------------------------------+

不使用函数,也可以写表达式进行日期的加减:

  date + INTERVAL expr unit

  date - INTERVAL expr unit

mysql> SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;
+-------------------------------------------+
| '2008-12-31 23:59:59' + INTERVAL 1 SECOND |
+-------------------------------------------+
| 2009-01-01 00:00:00                       |
+-------------------------------------------+
row in set (0.00 sec)mysql> SELECT '2005-01-01' - INTERVAL 1 SECOND;
+----------------------------------+
| '2005-01-01' - INTERVAL 1 SECOND |
+----------------------------------+
| 2004-12-31 23:59:59              |
+----------------------------------+
row in set (0.00 sec)

6、选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒(常用)

SELECT now(),date(now()); -- 日期
SELECT now(),time(now()); -- 时间
SELECT now(),year(now()); -- 年
SELECT now(),quarter(now()); -- 季度
SELECT now(),month(now()); -- 月
SELECT now(),week(now()); -- 周
SELECT now(),day(now()); -- 日
SELECT now(),hour(now()); -- 小时
SELECT now(),minute(now()); -- 分钟
SELECT now(),second(now()); -- 秒
SELECT now(),microsecond(now()); -- 微秒mysql> select now(),date(now());+---------------------+-------------+| now()               | date(now()) |+---------------------+-------------+| 2018-05-24 11:21:19 | 2018-05-24  |+---------------------+-------------+1 row in set (0.00 sec)mysql> SELECT now(),time(now()); -- 时间+---------------------+-------------+| now()               | time(now()) |+---------------------+-------------+| 2018-05-24 11:22:54 | 11:22:54    |+---------------------+-------------+1 row in set (0.00 sec)

EXTRACT(unit FROM date):从日期中抽取出某个单独的部分或组合

SELECT now(),extract(YEAR FROM now()); -- 年
SELECT now(),extract(QUARTER FROM now()); -- 季度
SELECT now(),extract(MONTH FROM now()); -- 月
SELECT now(),extract(WEEK FROM now()); -- 周
SELECT now(),extract(DAY FROM now()); -- 日
SELECT now(),extract(HOUR FROM now()); -- 小时
SELECT now(),extract(MINUTE FROM now()); -- 分钟
SELECT now(),extract(SECOND FROM now()); -- 秒
SELECT now(),extract(YEAR_MONTH FROM now()); -- 年月
SELECT now(),extract(HOUR_MINUTE FROM now()); -- 时分mysql> SELECT now(),extract(YEAR FROM now()); -- 年+---------------------+--------------------------+| now()               | extract(YEAR FROM now()) |+---------------------+--------------------------+| 2018-05-24 11:25:32 |                     2018 |+---------------------+--------------------------+1 row in set (0.00 sec)

7、个性化显示时间日期

  dayofweek(date)、dayofmonth(date)、dayofyear(date)分别返回日期在一周、一月、一年中是第几天

mysql> SELECT now(),dayofweek(now());+---------------------+------------------+| now()               | dayofweek(now()) |+---------------------+------------------+| 2017-04-19 20:25:41 |                4 |+---------------------+------------------+row in set (0.00 sec)mysql> SELECT now(),dayofmonth(now());+---------------------+-------------------+| now()               | dayofmonth(now()) |+---------------------+-------------------+| 2017-04-19 20:25:51 |                19 |+---------------------+-------------------+row in set (0.03 sec)mysql> select now(),dayofyear(now());+---------------------+------------------+| now()               | dayofyear(now()) |+---------------------+------------------+| 2017-04-19 20:26:00 |              109 |+---------------------+------------------+row in set (0.00 sec)

 dayname()、monthname()分别返回日期的星期和月份名称,名称是中文or英文的由系统变量lc_time_names控制(默认值是’en_US’)。

mysql> show variables like 'lc_time_names';+---------------+-------+| Variable_name | Value |+---------------+-------+| lc_time_names | en_US |+---------------+-------+row in set (0.00 sec)mysql> select dayname(now()),monthname(now());+----------------+------------------+| dayname(now()) | monthname(now()) |+----------------+------------------+| Wednesday      | April            |+----------------+------------------+row in set (0.00 sec)mysql> set lc_time_names='zh_CN';
Query OK, 0 rows affected (0.00 sec)mysql> select dayname(now()),monthname(now());+----------------+------------------+| dayname(now()) | monthname(now()) |+----------------+------------------+| 星期三         | 四月             |+----------------+------------------+row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker:单机编排工具docker-compose [十二]

一、docker-compose的安装 1、安装 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum install -y python2-pip pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose2、检查是否安装成功 docker-compose -v 二、docke…

HTML DOM文档对象查找元素的方法

一、HTML DOM 节点 在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点: 文档是一个文档节点。所有的HTML元素都是元素节点。所有 HTML 属性都是属性节点。文本插入到 HTML 元素是文本节点。注释是注释节点。 二、Document 对象 当浏览器载入 HTML 文档, 它就会…

快速排序(C语言)

快速排序 快速排序是一种不稳定排序,它的时间复杂度为O(nlgn),最坏情况为O(n2);空间复杂度为O(nlgn)。 这种排序方式是对于冒泡排序的一种改进,它采用分治模式,将一趟排序的数据分割成独立的两部分,其中一…

Apache配置多个监听端口和访问网站的方法

一个apache服务器的vhost.conf配置文件可以设置Apache监听多个端口,打开Apache的配置文件httpd.conf,在 Listen 80 下面添加多个监听端口如: Listen 8010 Listen 8020 Listen 8030 这样就在vhosts.conf配置文件中增加了8010、8020和8030端…

图的邻接矩阵(C语言)

邻接矩阵 无向图和有向图在邻接矩阵中的表示方法: 无向图和有向图大同小异,在这里只以无向图为例,代码部分通过简单调整即可对应编译有向图 邻接矩阵数据类型定义 #define MaxVertices 100 //定义最大容量 typedef struct{ //包含权的邻…

MySQL安装成功后dos命令行设置密码

我在windows7上安装好MySQL数据库后,添加了MySQL的安装目录D:\wamp\MySQL\bin;到环境变量中,这样就可以在任何目录下使用mysql。为了安全性考虑,需要设置MySQL数据库的密码。通过dos命令行设置的方式如下: 一、进入dos命令行 按…

图的邻接表表示法(C语言)

邻接表 邻接表数据结构类型如下: #define MaxVertices 100 typedef struct node{ //边表 int adjvex;node* next; }EdgeNode; typedef struct{ //顶点表 int vertex; EdgeNode* edgenext; }VertexNode; typedef VertexNode AdjList[MaxVertices];//…

最小生成树构造算法--Prim算法,Kruskal算法(C语言)

最小生成树 最小生成树(minimum spanning tree)是由n个顶点,n-1条边,将一个连通图连接起来,且使权值最小的结构。 最小生成树可以用Prim(普里姆)算法或kruskal(克鲁斯卡尔&#xff…

屏蔽烦人的百度搜索热点

开发时,在百度上搜索一些资料时,总是不经意看到百度搜索热点的一些新闻,然后经不住诱惑的标题就不经意间点了进去,然后就是连锁反应了。。等再次回到开发时已经是半小时之后的事了。又要把想要的东西重新捋一遍,导致开…

矩阵在竞赛中的应用

矩阵乘法代码&#xff1a; struct matrix {int n, m;int a[100][100]; }; // A.m B.n matrix matrix_mul(matrix A, matrix B) {matrix C;C.n A.n;C.m B.m;for (int i 0; i < A.n; i) {for (int j 0; j < B.m; j) {C.a[i][j] 0;for (int k 0; k < A.m; k) {C.a…

连通图遍历策略之广度优先搜索(C语言)

广度优先搜素&#xff08;BFS&#xff09; 广度优先搜索(又称宽度优先搜索)算法是最简便的图的搜索算法之一&#xff0c;该算法属于一种盲目搜寻法&#xff0c;目的是系统地展开并检查图中的所有节点&#xff0c;以找寻结果。换句话说&#xff0c;它并不考虑结果的可能位置&am…

多条件组合查询

一、效果图 二、前端代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" /> <title>Jquery分类</title> <script src"http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></sc…

“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候&#xff0c;经常会被问到&#xff1a;你知道“3次握手&#xff0c;4次挥手”吗&#xff1f;这时候我会“胸有成竹”地“背诵”前期准备好的“答案”&#xff0c;第一次怎么怎么&#xff0c;第二次……答完就没有下文了&#xff0c;面试官貌似也没有…

连通图遍历策略之深度优先搜索(C语言)

深度优先搜素&#xff08;DFS&#xff09; 深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中&#xff0c;当一个超链被选择后&#xff0c;被链接的HTML文件将执行深度优先搜索&#…

单源最短路径之迪杰斯特拉算法(C语言)

Dijkstra&#xff08;迪杰斯特拉&#xff09;算法 采用广度优先搜索思想&#xff0c;对有向赋权图寻找最短路径。 该算法对于不含负权的有向图来说&#xff0c;是目前已知的最快的单源最短路径算法。 时间复杂度&#xff1a;O&#xff08;n^2&#xff09; 基本原理&#xf…

Mybatis主线流程源码解析

Mybatis的基础使用以及与Spring的相关集成在官方文档都写的非常详细&#xff0c;但无论我们采用xml还是注解方式在使用的过程中经常会出现各种奇怪的问题&#xff0c;需要花费大量的时间解决。 抽空了解一下Mybatis的相关源码还是很有必要。 先来看一个简单的Demo&#xff1a; …

动态规划之背包问题(C语言)

动态规划 动态规划&#xff08;英语&#xff1a;Dynamic programming&#xff0c;简称DP&#xff09;是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题 动态规划思想大致上为&#xff1a;若要解一…

最大子列和问题(JAVA)

最大子列和 问题描述&#xff1a;给定N个整数的序列{A1&#xff0c;A2&#xff0c;A3&#xff0c;…&#xff0c;An}&#xff0c;求解子列和中最大的值。 这里我们给出{-2&#xff0c;11&#xff0c;-4&#xff0c;13&#xff0c;-5&#xff0c;-2}这样一个序列&#xff0c;正…

密码验证

用户在创建一个账户时&#xff0c;需要设置一个密码。密码的复杂程度是安全的保障之一&#xff0c;但是有些用户在设置密码时&#xff0c;总是把密码设置的过于简单&#xff0c;导致用户账户的安全存在威胁。因此&#xff0c;为了提高用户账户的安全性&#xff0c;添加了一个Ja…

阿里云windows/Linux 服务器建站教程,附WordPress配置方法

声明&#xff1a;文章仅供学习使用&#xff0c;故采用了多处链接&#xff0c;如有侵权&#xff0c;请私信我&#xff0c;立删。 最近看到一个学长做的验证界面&#xff0c;很简单的两个文本输入框&#xff0c;但是能给我们群里的小伙伴们做题提供一个验证答案的途径&#xff0…