MySQL sysdate()函数
转载自 MySQL sysdate()函数
MySQL SYSDATE函数介绍
下面说明了SYSDATE()
函数的语法:
SYSDATE(fsp);
如果函数用于字符串上下文或YYYYMMDDHHMMSS
格式,则SYSDATE()
函数将返回当前日期时间,格式为“YYYY-MM-DD HH:MM:SS”
的值,以防在函数用于数字上下文。
SYSDATE()
函数接受一个可选参数fsp
,它确定结果是否应该包含从0
到6
的小数秒精度。
请参见以下示例 -
mysql> SELECT SYSDATE();
+---------------------+
| SYSDATE() |
+---------------------+
| 2017-08-10 20:43:16 |
+---------------------+
1 row in set
如果您传递fsp
参数,则结果将包括小数秒精度,如以下示例所示:
mysql> SELECT SYSDATE(3);
+-------------------------+
| SYSDATE(3) |
+-------------------------+
| 2017-08-10 20:43:46.985 |
+-------------------------+
1 row in set
SYSDATE 与 NOW 比较
请考虑以下示例 -
mysql> SELECT SYSDATE(), NOW();
+---------------------+---------------------+
| SYSDATE() | NOW() |
+---------------------+---------------------+
| 2017-08-10 20:44:38 | 2017-08-10 20:44:38 |
+---------------------+---------------------+
1 row in set
似乎SYSDATE()
和NOW()函数都返回一个相同的值,它是执行语句时当前日期和时间。
然而,SYSDATE()
函数实际上返回执行时的时间,而NOW()
函数返回一个常量时间,该语句开始执行。
请参阅以下查询:
mysql> SELECT NOW(), SLEEP(5), NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(5) | NOW() |
+---------------------+----------+---------------------+
| 2017-08-10 20:46:51 | 0 | 2017-08-10 20:46:51 |
+---------------------+----------+---------------------+
1 row in set
在这个例子中,我们使用SLEEP()
函数暂停查询5
秒。 在同一个语句中,NOW()
函数总是返回一个常量,它是语句开始的时间。
我们将NOW()
函数更改为SYSDATE()
函数:
mysql> SELECT SYSDATE(), SLEEP(5), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(5) | SYSDATE() |
+---------------------+----------+---------------------+
| 2017-08-10 20:48:14 | 0 | 2017-08-10 20:48:19 |
+---------------------+----------+---------------------+
1 row in set
在同一个语句中,SYSDATE()
函数返回反映SYSDATE()
函数执行时间的不同时间值。
因为SYSDATE()
函数是非确定性的,索引不能用于评估求值引用它的表达式。
为了演示这个,我们创建一个名为tests
的表,并将一些数据插入到这个表中。
CREATE TABLE tests (id INT AUTO_INCREMENT PRIMARY KEY,t DATETIME UNIQUE
);INSERT INTO tests(t)
WITH RECURSIVE times(t) AS
( SELECT now() - interval 1 YEAR tUNION ALL SELECT t + interval 1 hourFROM timesWHERE t < now()
)
SELECT t
FROM times;
请注意,我们使用递归CTE来生成时间序列。 CTE从MySQL 8.0开始才有的功能。
因为t
列有唯一索引,所以下列查询应该执行得很快:
SELECT id, t
FROMtests
WHEREt >= SYSDATE() - INTERVAL 1 DAY;
但是,需要15ms
才能完成。让我们使用EXPLAIN
语句来看看细节。
EXPLAIN SELECT id, t
FROMtests
WHEREt >= SYSDATE() - INTERVAL 1 DAY;
执行上面分析语句,得到类似以下结果 -
原来,MySQL必须扫描表中的所有行才能获取数据。该索引无法使用。
如果在查询中将SYSDATE()
更改为NOW()
函数:
SELECT id, t
FROMtests
WHEREt >= NOW() - INTERVAL 1 DAY;
使用NOW()
函数,索引已被用于查询数据,如下面的EXPLAIN
结果所示:
EXPLAIN SELECT id, t
FROMtests
WHEREt >= NOW() - INTERVAL 1 DAY;
请注意,MySQL为您提供了--sysdate-is-now
选项,可以使SYSDATE()
函数的行为与NOW()
函数相同。
在本教程中,您已经了解了MySQL SYSDATE()
函数以及在使用MySQL之前应该考虑的一些原因。
MySQL sysdate()函数相关推荐
- MySQL sysdate()函数 不走索引的问题
下面说明了SYSDATE()函数的语法: SYSDATE(fsp); SQL 如果函数用于字符串上下文或YYYYMMDDHHMMSS格式,则SYSDATE()函数将返回当前日期时间,格式为" ...
- mysql sysdate 格式化_MySQL函数汇总
前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...
- mysql中sysdate函数转字符串_【转】MySQL:日期函数、时间函数总结(MySQL 5.X)
转自:http://www.cnblogs.com/she27/articles/1377089.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time) ...
- MySQL 中用NOW()和SYSDATE()函数获取当前日期时间
原文转载自: http://c.biancheng.net/mysql/now_sysdate.html MySql 中 NOW() 和 SYSDATE() 函数的作用相同,都是返回当前日期和时间值, ...
- mysql时间函数now()_MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
- mysql sysdate用法_mysql中时间函数now()current_timestamp()和sysdate()比较
转载请注明出处 https://www.cnblogs.com/majianming/p/9647786.html 在mysql中有三个时间函数用来获取当前的时间,分别是now().current_t ...
- Mysql日期函数使用大全
为什么80%的码农都做不了架构师?>>> 1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有 ...
- MySQL now()函数
转载自 MySQL now()函数 MySQL NOW()函数简介 MySQL NOW()函数以"YYYY-MM-DD HH:MM:DD"或"YYYYMMDDHHMMS ...
- 建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...
学生选课数据库SQL语句45道练习题: 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...
最新文章
- electron 创建窗口2
- Python核心编程读笔 8: 文件和输入输出
- 在Windows系统中安装WAMP
- 用beyond compare解决git不能同步项目重新下载项目然后就行对比解决冲突
- 按照时间,每天分区;按照数字,200000一个分区
- 《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念
- 【Linux】kali2019安装docker
- [] __nw_connection
- 【Webcam设计】x264对OpenCV Mat的编解码
- matlab里直线拟合,matlab如何拟合直线
- HCNP数通认证考试心得体会
- excel删除无尽空白行_Excel 快速删除空白行
- 澳大利亚域名_澳大利亚域名.au注册要求
- 科大讯飞实现了APP用自己的声音听故事
- 第一期码易猿游活动圆满结束 精彩仍将继续
- 习惯,到底有多重要?
- Veil+tdm-gcc免杀360火绒瑞星
- 业务:客户关系管理(CRM)业务介绍
- 团队任务3:每日立会(2018-10-23)
- 自定义的可拖动滑块验证码的实现方式(SlideView)
热门文章
- LeetCode28 对称的二叉树-简单
- C++set容器-内置类型指定排序
- JAVA基础知识+基础代码
- word List 15
- Spring Boot 2.0新特性
- D. Salary Changing(二分,前缀和,贪心,瞎搞)
- P6282 [USACO20OPEN] Cereal S 思维
- Codeforces Round #712 (Div. 2) D. 3-Coloring 交互 构造
- P1297 [国家集训队]单选错位 期望
- 博弈论(基础概念+例题)