您的位置:

从多个方面详解MySQL查询当前时间

一、MySQL中当前时间的获取

SELECT NOW();

NOW()是MySQL内置的函数,用于获取当前系统时间。

在MySQL中还有其他获取当前时间的函数,如CURDATE()、CURTIME()和SYSDATE(),它们用于获取当前日期、当前时间和当前系统日期时间。

二、使用CURRENT_TIMESTAMP替代NOW()

SELECT CURRENT_TIMESTAMP;

CURRENT_TIMESTAMP的功能与NOW()类似,也可以获取当前系统时间,但是更加灵活,可以用作列默认值和更新列值。

CURRENT_TIMESTAMP的一个常用场景是在创建表时设置时间戳字段的默认值,例如:

CREATE TABLE `table_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

上面的表创建语句中,created_at字段的默认值为当前时间,updated_at字段的默认值为当前时间,并且在更新记录时自动更新为当前时间。

三、使用DATE_FORMAT格式化时间

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');

DATE_FORMAT函数用于格式化日期时间,其中第一个参数是要格式化的日期时间,第二个参数是格式化字符串。

常用的格式化字符串包括:

  • %Y:四位数字表示的年份
  • %m:表示月份,范围为00~12
  • %d:表示日期,范围为00~31
  • %H:表示小时,范围为00~23
  • %i:表示分钟,范围为00~59
  • %s:表示秒数,范围为00~59

通过使用不同的格式化字符串,我们可以将日期时间按照不同的格式输出。

四、使用UNIX_TIMESTAMP将日期时间转换为时间戳

SELECT UNIX_TIMESTAMP(NOW());

UNIX_TIMESTAMP函数用于将日期时间转换为Unix时间戳,即从1970年1月1日00:00:00以来经过的秒数。

通过将日期时间转换为Unix时间戳,我们可以进行更精确的时间计算,例如计算两个日期时间之间的差值。

五、使用TIMESTAMPDIFF计算两个日期时间之间的差值

SELECT TIMESTAMPDIFF(SECOND, '2022-01-01 00:00:00', NOW());

TIMESTAMPDIFF函数用于计算两个日期时间之间的差值,其中第一个参数是时间单位,第二个参数是开始时间,第三个参数是结束时间。

常用的时间单位包括:

  • SECOND:秒数
  • MINUTE:分钟数
  • HOUR:小时数
  • DAY:天数
  • WEEK:周数
  • MONTH:月数
  • YEAR:年数

通过使用TIMESTAMPDIFF函数,我们可以计算两个日期时间之间相差的秒数、分钟数、小时数等等。

六、使用DATE_ADD和DATE_SUB计算日期时间的加减

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);

DATE_ADD和DATE_SUB函数用于计算日期时间的加减,其中第一个参数是要加减的日期时间,第二个参数是加减的时间间隔。

常用的时间间隔包括:

  • YEAR:年
  • QUARTER:季度
  • MONTH:月
  • WEEK:周
  • DAY:天
  • HOUR:小时
  • MINUTE:分钟
  • SECOND:秒

通过使用DATE_ADD和DATE_SUB函数,我们可以计算日期时间的加减,例如获取昨天的日期、获取一个小时前的时间等等。