`

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

    博客分类:
  • DB
 
阅读更多
解读mysql时间函数sysdate()和now()

NOW()

返回当前日期和时间值,其格式为 '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的字段是从左到右依次执行。
分享到:
评论

相关推荐

    mysql 时间函数

    now() 函数是 mysql 中最常用的获取当前日期和时间的函数,建议总是使用 now() 来替代其他函数。now() 函数的语法非常简单,例如: ```sql SELECT now(); ``` 这将返回当前的日期和时间,例如:2008-08-08 22:20:46...

    mysql日期函数时间函数及加减运算

    sysdate() 函数与 now() 函数类似,但是它在执行时动态获取当前日期和时间,而不是在执行开始时获取。例如: ```sql mysql> select sysdate(), sleep(3), sysdate(); +---------------------+----------+-----------...

    Mysql函数手册.doc

    - `sysdate()`:与`now()`类似,但`sysdate()`在每次函数调用时都会提供最新的日期和时间,而不是在查询开始时获取一次。这意味着如果在查询中多次调用`sysdate()`,每次都会得到不同的结果,即使在查询执行期间有...

    mysql 中 时间和日期函数.docx

    在MySQL数据库系统中,时间和日期函数是用于处理和操作日期和时间数据的重要工具。这些函数使得在SQL查询中获取、格式化或计算日期和时间变得非常便捷。以下是一些主要的时间和日期函数的详细说明: 1. **当前日期...

    mysql 日期操作 增减天数、时间转换、时间戳.docx

    sysdate() 函数也可以获取当前的日期和时间,但是它与 now() 函数的区别在于:now() 函数在执行开始时值就得到,而 sysdate() 函数在函数执行时动态得到值。 ```sql SELECT sysdate(); ``` 可以看到,sysdate() ...

    mysql的日期和时间函数

    mysql的日期和时间函数 这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) ...

    MySQL 获得当前日期时间的函数小结

    首先,`now()`函数是最常用的获取当前日期时间的函数,它返回服务器上的当前日期和时间,格式为`YYYY-MM-DD HH:MM:SS`。例如,`now()`可能返回`2023-05-15 14:30:00`。此外,还有多个与`now()`等效的函数,如`...

    在MySql中获取当前系统当前时间的函数和TIMESTAMP列类型使用说明

    与Oracle数据库中的`Sysdate`不同,MySQL提供了多种函数来获取当前的日期和时间。 #### 1. `NOW()` 函数 - **描述**:`NOW()` 函数返回当前的日期和时间,格式为`YYYY-MM-DD HH:MM:SS`。 - **示例**: ```sql ...

    Mysql+Oracle函数文档

    3. **日期/时间函数**:如 `NOW()`, `DATE_ADD()`, `TIMESTAMPDIFF()`,帮助处理日期和时间信息。 4. **聚合函数**:如 `COUNT()`, `SUM()`, `AVG()`,用于对一组值进行统计分析。 5. **控制流程函数**:如 `IF()`, ...

    MySQL 获得当前日期时间.docx

    MySQL 中有多种方式来获得当前日期时间,包括 now()、current_timestamp()、localtime() 等函数,这些函数都可以获得当前的日期时间,但是它们之间有一些区别。 1. 获得当前日期+时间(date + time)函数:now() ...

    mysqlAPI--日期和时间函数.docx

    MySQL 日期和时间函数 MySQL 中的日期和时间函数用于操作时间值,包括添加、转换、提取日期和时间的各个部分等操作。下面是 MySQL 日期和时间函数的详细介绍: 日期和时间函数 1. ADDTIME():添加日期值的时间值...

    MySQL获取当前时间.docx

    MySQL 提供了多种内置函数,使得获取当前日期和时间变得简单易行。 首先,我们来看 `NOW()` 函数。`NOW()` 是一个非常直观的函数,用于获取系统当前的日期和时间,格式为 `YYYY-MM-DD HH:MM:SS`。这个函数包含了...

    MySQL 获得当前日期时间 函数

    - `sysdate()` 函数:与 `now()` 类似,但 `sysdate()` 在每次函数调用时都会返回当前系统日期和时间,这意味着如果在查询中多次使用 `sysdate()`,可能会得到不同的结果,特别是在涉及到延迟执行或子查询的情况下...

    mysql 日期函数.txt

    ### MySQL 日期函数详解 #### 1. DAYOFWEEK(date) **功能**: 返回指定日期是一周中的第几天。返回值范围为1(星期日)到7(星期六),符合ODBC标准。 **示例**: ```sql SELECT DAYOFWEEK('1998-02-03'); ``` ...

    mysql时间比较

    MySQL 提供了一系列的功能来处理日期和时间相关的数据,包括但不限于日期时间的比较、加减运算等。接下来,我们将深入探讨如何在 MySQL 中进行时间比较及其相关的操作。 #### 一、基本的时间加减操作 在 Oracle 中...

    mysqlAPI--日期和时间函数.pdf

    MySQL API 提供了一系列丰富的日期和时间函数,这些函数允许开发者对日期和时间数据进行复杂的操作。在本节中,我们将详细探讨这些函数的功能及其在实际应用中的用途。 1. **ADDTIME()** 和 **DATE_ADD()**: 这两个...

Global site tag (gtag.js) - Google Analytics