热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

解读mysql时间函数sysdate()和now()

解读mysql时间函数sysdate()和now()NOW()www.2cto.com返回当前日期和时间值,其格式为'YYYY-MM-DDHH:MM:SS'或YYYYMMDDHHMMSS,具体格式取决于该函数是否用在字符串中或数字语境中。mysql>...
解读mysql时间函数sysdate()和now()
 
NOW() 
  www.2cto.com  
返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。 
mysql> SELECT NOW(); 
        -> '1997-12-15 23:50:26' 
mysql> SELECT NOW() + 0; 
        -> 19971215235026 
在一个存储程序或触发器内, NOW() 返回一个常数时间,该常数指示了该程序或触发语句开始执行的时间。这同SYSDATE()的运行有所不同。 
 
SYSDATE() 
 
返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS, 具体格式根据函数是否用在字符串或数字语境而定。 
在一个存储程序或触发器中, SYSDATE()返回其执行的时间, 而非存储成都或触发语句开始执行的时间。这个NOW()的运作有所不同。 
 
我的理解: 
now()是应用向mysql服务器发起执行语句时(无论是发送的sql还是存储过程的名字),now()时间已经产生。 
调用在该存储过程中或者sql中调用now(),即为调用该变量。 
而sysdate()函数是每次实时去取的 
 
在我们公司的业务中,由于禁止使用存储过程,显然无论使用sysdate()还是now()都能够满足业务需求。当然,考虑到sysdate要实时取时间,我认为now()是比较推荐的. 
 
实践是检验真理的唯一标准: 
1.存储过程: 
BEGIN 
  select now(),sysdate(); 
  select sleep(3) ; 
  select now(),sysdate(); 
END 
执行结果: 
 
mysql> call test; 
+---------------------+---------------------+ 
| now()               | sysdate()           | 
+---------------------+---------------------+ 
| 2011-01-21 11:22:58 | 2011-01-21 11:22:58 | 
+---------------------+---------------------+ 
1 row in set (0.00 sec) 
+----------+ 
| sleep(3) | 
+----------+ 
|        0 | 
+----------+ 
1 row in set (3.00 sec) 
+---------------------+---------------------+ 
| now()               | sysdate()           | 
+---------------------+---------------------+ 
| 2011-01-21 11:23:01 | 2011-01-21 11:23:01 | 
+---------------------+---------------------+ 
1 row in set (3.01 sec) 
Query OK, 0 rows affected (3.01 sec) 
通过如上结果来看,第一个now()跟第二个now()执行结果不一致;对存储过程之内的now()函数,并非取自存储过程执行的开始时间。 
 
2.sql语句测试: 
mysql> select now(),sleep(3),now(); 
+---------------------+----------+---------------------+ 
| now()               | sleep(3) | now()               | 
+---------------------+----------+---------------------+ 
| 2011-01-21 11:25:45 |        0 | 2011-01-21 11:25:45 | 
+---------------------+----------+---------------------+ 
1 row in set (3.00 sec) 
评:now()函数,每次取语句开始的执行时间. 
mysql> select sysdate(),sleep(3),sysdate(); 
+---------------------+----------+---------------------+ 
| sysdate()           | sleep(3) | sysdate()           | 
+---------------------+----------+---------------------+ 
| 2011-01-21 11:26:44 |        0 | 2011-01-21 11:26:47 | 
+---------------------+----------+---------------------+ 
1 row in set (3.02 sec) 
评:sysdate() 每次会取实际的时间。 
 
综合上面的结果: 
1.在公司绝大部分业务中now()函数已经够用,特别是gmt_create,gmt_modified字段的时间,无疑要用now() 
2.sysdate()用在需要每个字段执行的时候实时取时间的。 
3.mysql的字段是从左到右依次执行。
 

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
author-avatar
yico承诺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有