首页 > 数据库 >MySQL时间函数的选择

MySQL时间函数的选择

时间:2023-06-19 13:06:22浏览次数:48  
标签:sysdate 函数 05 09 选择 2019 MySQL now


Oracle中获取系统当前的时间,可以用sysdate、systimestamp等函数,在MySQL中,同样有类似的函数可以使用,碰巧看到eygle大神最近的文章,短短几行文字,就介绍了MySQL中获取系统当前时间的来龙去脉。


在 MySQL 中,获得系统当前时间可以使用now() 函数,这是最简单和应用最广的函数。

除此之外,current_timestamp(),localtime(),localtimestamp()都是now()函数的同义词,返回的结果相同:



mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-05 12:28:16 |
+---------------------+
1 row in set (0.00 sec)

mysql> select current_timestamp(),localtime(),localtimestamp();
+---------------------+---------------------+---------------------+
| current_timestamp() | localtime() | localtimestamp() |
+---------------------+---------------------+---------------------+
| 2019-09-05 12:30:43 | 2019-09-05 12:30:43 | 2019-09-05 12:30:43 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)



配套的,实现同样效果的同义词还有

current_timestamp,localtime,localtimestamp:



mysql> select current_timestamp,localtime,localtimestamp;
+---------------------+---------------------+---------------------+
| current_timestamp | localtime | localtimestamp |
+---------------------+---------------------+---------------------+
| 2019-09-05 12:30:31 | 2019-09-05 12:30:31 | 2019-09-05 12:30:31 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)



now()函数在一个SQL执行的过程中,取得的是执行开始的时间,并且在执行过程中保持不变,与之相对的则是sysdate()函数,sysdate模拟Oracle数据库的实现,每次执行时,都调用时间函数获得时间,数值每次不同:



mysql> select now(),sysdate(),sleep(3),now(),sysdate() ;
+---------------------+---------------------+----------+---------------------+---------------------+
| now()               | sysdate()           | sleep(3) | now()               | sysdate()           |
+---------------------+---------------------+----------+---------------------+---------------------+
| 2019-09-05 13:34:47 | 2019-09-05 13:34:47 | 0        | 2019-09-05 13:34:47 | 2019-09-05 13:34:50 |
+---------------------+---------------------+----------+---------------------+---------------------+
1 row in set (3.00 sec)



在MySQL的源码中,可以看到这行注释,item_func_sysdate_local模拟了Oracle的行为,每次执行获取当前的真实时间-Real current time,而不是query_start()的时间:

00516 /*

参考:

http://mysql.localhost.net.ar/sources/doxygen/mysql-5.1/item__timefunc_8h-source.html

除了sysdate(),之外,curdate()和curtime()还能够直接将日期和时间拆分开来:



mysql> select curdate(),curtime();
+------------+-----------+
| curdate()  | curtime() |
+------------+-----------+
| 2019-09-05 | 13:37:14 |
+------------+-----------+
1 row in set (0.00 sec)



最后,如果你觉得now()函数就够了,可以在MySQL启动时指定-sysdate-is-now,sysdate()就会被当成now()的一个同义词,按照同样的行为工作了。从中能体会到,MySQL的设计者确实经验丰富,一个小小的时间函数,就可以提供这么多种可选的用途,这些都是值得学习的。

标签:sysdate,函数,05,09,选择,2019,MySQL,now
From: https://blog.51cto.com/u_13950417/6512433

相关文章

  • SELECT和DELETE执行计划的不同选择
    模拟表名,A表的数据量约1000万,B表的数据量约500万,进行连接,其中这几个条件字段,都创建了索引,SQL>SELECT*fromAainnerjoinBbona.ID=b.idwhereb.C_DATE<=trunc(sysdate)-1000;我们知道在CBO优化器模式下,Oralce会基于Cost成本,来选择执行计划。从执行计划看,......
  • Pycharm中print函数有end= 参数,控制台不打印输出
    Pycharm中print函数有end=参数,控制台不打印输出foriinrange(1,256):#寻找对称平方数square=str(i*i)#转为字符串ifsquare==square[::-1]:print(i,end='\t')循环中print函数有end=参数,无论end='\t'还是end=''end='9'e......
  • last_load_time和last_active_time的选择
    我们平台在查找使用全表扫描执行计划的SQL时,发现有些应用跑过逻辑的SQL,确认用的全表扫,但是未能实时的检索到,于是,看下用的SQL,SELECTs.sql_text,P.OBJECT_OWNER,P.SQL_ID,P.OPERATION,P.OPTIONS,S.LAST_LOAD_TIME,ROW_NUMBER()OVER(PARTI......
  • 初探MySQL-小白的Linux安装笔记
    这篇文章是我们组内一位小伙伴垒的文字,亲测每个步骤,真实、可靠、接地气,照着做就能入门Linux下的MySQL安装,欢迎更多的小伙伴能将日常工作中的经验记录下来,分享给其他人,正所谓“独乐乐不如众乐乐”。最近接到一个任务,由于开发环境变化,需要将旧机器上的mysql迁移到新机器上去,其中涉及......
  • 小白学习MySQL - 闲聊聊
    众所周知,在DB-Engines的排行榜,一直占据前两位的数据库,就是Oracle和MySQL,Oracle作为关系型数据库的老大,在这个生态圈中,占据着绝对优势,MySQL作为一款面向“开源"的软件,虽然被Oracle曲线收购,相比之下,还是存在着“开源”的血统,而且有很多分支,无论是国外的MariaDB,还是国内的AliSQL,都在发......
  • 小白学习MySQL - MySQL会不会受到“高水位”的影响?
    前两天碰到了一个问题,MySQL的一张表,1220万数据量,需要删除1200万数据,仅存储20万数据,讨论了三种方案,1.00:00直接执行truncate,只存储新数据。2.将1220万中的20万采用CTAS存到一张中间表,再通过rename改这两张表的名称,实现替换操作。3.delete删除1200万数据。经过综合考虑,用的方案3,方......
  • C++多态的原理(虚函数指针和虚函数表) --imxiangzi 好好看
     C++多态的原理(虚函数指针和虚函数表)1.虚函数指针和虚函数表2.继承中的虚函数表2.1单继承中的虚函数表2.2多继承中的虚函数表3.多态的原理4.总结1.虚函数指针和虚函数表以下代码:问类实例化出的对象占几个字节?#include<iostream>usingnamespacestd;classA{ intm_a;publi......
  • php解决 mysql_connect(): The mysql extension is deprecated and will be removed i
    Themysqlextensionisdeprecatedandwillberemovedinthefuture:usemysq翻译:mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代。解决方法:打开php.ini配置文件把display_errors=On改为display_errors=Off改完之后重启服务就可以了。  ......
  • python之mysql登录验证
    fromdotenvimportload_dotenvimportpymysqlimportosload_dotenv()connection=pymysql.connect(host=os.getenv("HOST"),database=os.getenv("DATABASE"),user=os.getenv("USERNAME"),password=os.getenv("PASSWORD......
  • MySQL中SQL语句的执行顺序(详细)
    一:SQL语句的执行顺序作为一个开发人员,在开发中基本上每时每刻都要和数据库打交到;虽然写过无数的SQL语句,但是写好一个SQL可不是这么简单的,它涉及到各式各样的优化和书写方式;但下面我以MySQL中的SQL执行顺序来作为讲解,对其进行剖析。1:SQL数据的准备为了可以为下文做铺垫,......