mysql操作语句now_MySQL now()函数

在本教程中,您将了解MySQL NOW()函数,并在各种上下文中应用NOW()函数。

MySQL NOW()函数简介

MySQL NOW()函数以"YYYY-MM-DD HH:MM:DD"或"YYYYMMDDHHMMSS.uuuuuuu"格式的字符串或数字返回配置的时区中的当前日期和时间。

NOW()函数的返回类型取决于使用它的上下文。 例如,在以下语句中,NOW()函数以字符串形式返回当前日期和时间:

mysql> SELECT NOW();

+---------------------+

| NOW() |

+---------------------+

| 2017-08-10 05:42:21 |

+---------------------+

1 row in set

但是,在数值上下文中,NOW()函数返回当前日期和时间作为数字:

mysql> SELECT NOW() + 0;

+----------------+

| NOW() + 0 |

+----------------+

| 20170810054252 |

+----------------+

1 row in set

请注意,NOW()函数在该语句开始执行时返回一个日期和时间的常量。请参阅以下示例:

mysql> SELECT NOW(), SLEEP(5), NOW();

+---------------------+----------+---------------------+

| NOW() | SLEEP(5) | NOW() |

+---------------------+----------+---------------------+

| 2017-08-10 05:45:14 | 0 | 2017-08-10 05:45:14 |

+---------------------+----------+---------------------+

1 row in set

在上面查询中,执行第一个NOW()函数,SLEEP(5)函数暂停执行查询5秒,然后执行第二个NOW()函数。 然而,两个NOW()函数返回相同的值,尽管它们在不同的时间执行。

如果您想要准确指定执行语句的时间,则可使用SYSDATE(); 请参见以下示例:

mysql> SELECT SYSDATE(), SLEEP(5), SYSDATE();

+---------------------+----------+---------------------+

| SYSDATE() | SLEEP(5) | SYSDATE() |

+---------------------+----------+---------------------+

| 2017-08-10 05:47:05 | 0 | 2017-08-10 05:47:10 |

+---------------------+----------+---------------------+

1 row in set

如果要更改MySQL服务器的时区以调整NOW()函数返回的当前日期和时间,则使用以下语句:

SET time_zone = 你要的时区;

MySQL NOW()函数计算

因为NOW()函数在数字上下文中使用时会返回一个数字,所以您可以在计算中使用它,例如当前时间加上1小时,现在减去2小时,当前时间加1天,当前时间减去指定天数等。

以下语句返回当前日期和时间,当前时间减去1小时,当前时间加1小时:

mysql>-- mysql now minus 1 hour

SELECT (NOW() - INTERVAL 1 HOUR) 'NOW - 1 hour',

NOW(),

-- mysql now plus 1 hour

NOW() + INTERVAL 1 HOUR 'NOW + 1 hour';

+---------------------+---------------------+---------------------+

| NOW - 1 hour | NOW() | NOW + 1 hour |

+---------------------+---------------------+---------------------+

| 2017-08-10 04:49:50 | 2017-08-10 05:49:50 | 2017-08-10 06:49:50 |

+---------------------+---------------------+---------------------+

1 row in set

以下语句返回当前日期和时间,当前日期和时间减去1天,加1天:

mysql> -- mysql now minus 1 day

SELECT (NOW() - INTERVAL 1 DAY) 'NOW - 1 day',

NOW(),

-- mysql now plus 1 day

(NOW() + INTERVAL 1 DAY) 'NOW + 1 day';

+---------------------+---------------------+---------------------+

| NOW - 1 day | NOW() | NOW + 1 day |

+---------------------+---------------------+---------------------+

| 2017-08-09 05:50:47 | 2017-08-10 05:50:47 | 2017-08-11 05:50:47 |

+---------------------+---------------------+---------------------+

1 row in set

MySQL NOW()作为列的默认值

您可以使用NOW()函数作为DATETIME或TIMESTAMP列的默认值。当您在INSERT语句中省略日期或时间值时,MySQL会将当前日期和时间插入到默认值为NOW()的列中。

我们来看下面的一个例子。

首先,创建一个名为tmp的新表,其中包含三个列:id,title和created_on。 created_on列具有由NOW()函数指定的默认值。

USE testdb;

CREATE TABLE tmp(

id INT PRIMARY KEY AUTO_INCREMENT,

title VARCHAR(255) NOT NULL,

created_on DATETIME NOT NULL DEFAULT NOW() -- or CURRENT_TIMESTAMP

);

请注意,CURRENT_TIMESTAMP和CURRENT_TIMESTAMP()是NOW()的同义词,因此可以互换使用它们。

第二步,在tmp表中插入一个新行,而不指定created_on列的值:

INSERT INTO tmp(title)

VALUES('Test NOW() function');

第三步,从tmp表查询数据:

mysql> SELECT * FROM tmp;

+----+---------------------+---------------------+

| id | title | created_on |

+----+---------------------+---------------------+

| 1 | Test NOW() function | 2017-08-10 05:55:17 |

+----+---------------------+---------------------+

1 row in set

created_on列的值已更新为执行INSERT语句的当前日期和时间。

在本教程中,我们向您介绍了返回执行语句的当前日期和时间的MySQL NOW()函数。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值