MySQL – 获取不带时区偏移的日期

MySQL – 获取不带时区偏移的日期

在本文中,我们将介绍如何在MySQL中获取不带时区偏移的日期。MySQL 提供了多种函数和方法来获取日期和时间,但默认情况下,这些函数会返回带有时区偏移的日期时间。然而,有时用户可能需要获取一个纯粹的日期,并且不受时区的影响。接下来,我们将了解在MySQL中如何实现这一点,并提供一些示例来说明。

阅读更多:MySQL 教程

使用DATE()函数获取日期

MySQL中的DATE()函数可以从datetime、timestamp和datetime列中提取日期部分,而不带有时区信息。以下是DATE()函数的用法示例:

SELECT DATE(datetime_column) FROM table_name;

这里,datetime_column表示包含日期和时间的列名,table_name表示包含该列的表名。下面是一个示例:

SELECT DATE('2022-10-31 14:30:00') AS date;

上述查询将返回2022-10-31作为结果,不包含任何时区信息。

使用DATE_FORMAT()函数自定义日期格式

除了使用DATE()函数外,你还可以使用DATE_FORMAT()函数来获取不带时区偏移的日期,并按照所需的格式进行自定义。DATE_FORMAT()函数允许你按照指定的日期格式化字符串来格式化日期。

以下是DATE_FORMAT()函数的用法示例:

SELECT DATE_FORMAT(datetime_column, 'format_string') FROM table_name;

这里,datetime_column表示包含日期和时间的列名,format_string是你希望返回的日期格式的字符串。下面是一个示例:

SELECT DATE_FORMAT('2022-10-31 14:30:00', '%Y-%m-%d') AS date;

上述查询将返回2022-10-31作为结果,不包含任何时区信息。

日期格式化字符串说明

在使用DATE_FORMAT()函数时,你可以使用不同的占位符来表示日期的不同部分。以下是一些常用的日期格式化字符串的示例:

  • %Y:表示四位数的年份(如2022)
  • %y:表示两位数的年份(如22)
  • %m:表示月份(01-12)
  • %d:表示月份中的天数(01-31)
  • %H:表示24小时制的小时数(00-23)
  • %h:表示12小时制的小时数(01-12)
  • %i:表示分钟数(00-59)
  • %s:表示秒数(00-59)
  • %p:表示AM或PM

你可以根据需要将这些占位符组合在一起,以满足你的日期格式要求。例如,如果你想以”月份/年份”的格式显示日期,你可以使用以下格式化字符串:

SELECT DATE_FORMAT(datetime_column, '%m/%Y') FROM table_name;

使用UNIX_TIMESTAMP()和FROM_UNIXTIME()函数进行转换

另一种方法是使用UNIX_TIMESTAMP()函数将日期时间值转换为UNIX时间戳,然后再使用FROM_UNIXTIME()函数将UNIX时间戳转换回日期。UNIX时间戳是从1970年1月1日开始的秒数。

以下是UNIX_TIMESTAMP()和FROM_UNIXTIME()函数的用法示例:

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(datetime_column)) FROM table_name;

这里,datetime_column表示包含日期和时间的列名,table_name表示包含该列的表名。这个方法将返回与原始日期相同的日期,但不带有时区偏移。

使用UTC_TIMESTAMP()和CONVERT_TZ()函数

如果你的MySQL服务器设置为UTC时区,你可以使用UTC_TIMESTAMP()函数获取当前的UTC日期和时间。然后,你可以使用CONVERT_TZ()函数将UTC日期和时间转换为特定时区的日期和时间。

以下是使用UTC_TIMESTAMP()和CONVERT_TZ()函数的用法示例:

SELECT CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '+08:00') FROM table_name;

这里,+00:00表示UTC时区的偏移量,+08:00表示要转换到的目标时区的偏移量。

示例场景

假设你的应用程序需要在不同的时区下显示用户注册的日期。你希望将用户注册时的日期保存为UTC时间,并在用户查看注册日期时,将其转换为用户所在时区的本地日期。

首先,你可以使用UTC_TIMESTAMP()函数保存用户注册日期时间,如下所示:

INSERT INTO users (registration_date) VALUES (UTC_TIMESTAMP());

当用户查看他们的注册日期时,你可以根据他们的时区将其转换为本地日期时间:

SELECT CONVERT_TZ(registration_date, '+00:00', user_timezone) FROM users WHERE user_id = 123;

在上述示例中,user_timezone表示用户所在时区的偏移量。

总结

本文介绍了在MySQL中获取不带时区偏移的日期的几种方法。你可以使用DATE()函数提取日期部分,或使用DATE_FORMAT()函数按照指定的格式自定义日期显示。另外,你还可以使用UNIX_TIMESTAMP()和FROM_UNIXTIME()函数进行日期和UNIX时间戳之间的转换,或者使用UTC_TIMESTAMP()和CONVERT_TZ()函数在不同时区之间进行转换。通过选择适合你的需求的方法,你可以获得不带时区偏移的日期,并在应用程序中进行正确的日期显示与转换。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程