迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

仅将 MySQL 时间戳日期与日期参数进行比较

作者:迹忆客 最近更新:2023/05/07 浏览次数:

在本篇文章中我们将使用 DATE()CAST()CONVERT() 函数将 MySQL 时间戳日期仅与 date 参数进行比较。


MySQL 中的 DATE() 与 CAST() 与 CONVERT()

下面简单介绍一下各个功能。 您还可以通过单击此处找到每个示例的更多示例。

MySQL 中的 DATE() 方法

DATE() 方法从时间戳或 DateTime 表达式中提取日期部分。 它只有一个参数,必须是 DATE、TIMESTAMP 或 DATETIME 类型。

如果传递的参数不属于上述类型,则返回 NULL。 如果您使用的是 MySQL 4.0 或更高版本,则此功能可用。

MySQL 中的 CONVERT() 方法

CONVERT() 方法将特定值转换为指定的数据类型。 例如,我们可以将 TIMESTAMP 类型的值转换为 DATE 类型。

它有两个参数,而且都是必需的。 第一个参数是要转换的值,另一个是指定值转换的数据类型。

它在 MySQL 4.0 及以上版本中可用。

MySQL 中的 CAST() 方法

CAST() 方法类似于上面解释的 CONVERT()。 我们用它来将一种数据类型的值转换为另一种数据类型。

例如,当我们将 DateTime 的值转换为 DATE 类型时。 与 CONVERT() 方法一样,它也有两个值:要转换的值和要转换成的数据类型。

如果我们有 MySQL 4.0 或以上版本,我们就可以使用这个功能。


仅将 MySQL 时间戳日期与日期参数进行比较

为了仅将 MySQL 时间戳日期与 date 参数进行比较,我们创建了一个名为 date_comparison 的表,该表具有两个属性 ID 和 COL_DATETIME。 这里ID是int类型,COL_DATETIME是TIMESTAMP。

您还可以使用以下查询创建此表,以跟随我们学习本教程。

例子:

# Create a table
CREATE TABLE date_comparison(
    ID INT NOT NULL AUTO_INCREMENT,
    COL_DATETIME TIMESTAMP NOT NULL,
    PRIMARY KEY (ID));

# Insert data
INSERT INTO date_comparison(col_datetime)
VALUES
('2001-11-15 09:50:00'),
('2006-08-09 04:30:00'),
('2001-11-15 23:30:00'),
('2005-06-03 06:22:11'),
('2004-01-01 21:42:17');

# Show all data
SELECT * FROM date_comparison;

输出:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  1 | 2001-11-15 09:50:00 |
|  2 | 2006-08-09 04:30:00 |
|  3 | 2001-11-15 23:30:00 |
|  4 | 2005-06-03 06:22:11 |
|  5 | 2004-01-01 21:42:17 |
+----+---------------------+
5 rows in set (0.00 sec)

现在,我们要检索特定日期的记录; 例如,仅针对日期 2005-06-03。 我们需要将日期参数与 TIMESTAMP 类型的所有 col_datetime 列值进行比较。


使用 DATE() 仅将 MySQL 时间戳日期与日期参数进行比较

因此,我们只能按如下方式将时间戳日期与日期参数进行比较。

例子:

SELECT * FROM date_comparison WHERE DATE(col_datetime) = '2005-06-03';

输出:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  4 | 2005-06-03 06:22:11 |
+----+---------------------+
1 row in set (0.00 sec)

如果我们只关注日期,我们可以使用 DATE() 函数将 col_datetime 转换为日期。

例子:

SELECT ID, DATE(col_datetime) FROM date_comparison
WHERE DATE(col_datetime) = '2005-06-03';

输出:

+----+--------------------+
| ID | DATE(col_datetime) |
+----+--------------------+
|  4 | 2005-06-03         |
+----+--------------------+
1 row in set (0.00 sec)

使用 CAST() 仅将 MySQL 时间戳日期与日期参数进行比较

我们还可以使用 CAST() 函数将时间戳日期与日期参数进行比较。

例子:

SELECT ID, CAST(col_datetime AS DATE) FROM date_comparison
WHERE CAST(col_datetime AS DATE) = '2005-06-03';

输出:

+----+----------------------------+
| ID | CAST(col_datetime AS DATE) |
+----+----------------------------+
|  4 | 2005-06-03                 |
+----+----------------------------+
1 row in set (0.00 sec)

使用 CONVERT() 仅将 MySQL 时间戳日期与日期参数进行比较

CONVERT() 函数还可以仅将时间戳与日期进行比较。

例子:

SELECT ID, CONVERT(col_datetime, DATE) FROM date_comparison
WHERE CONVERT(col_datetime, DATE) = '2005-06-03';

输出:

+----+-----------------------------+
| ID | CONVERT(col_datetime, DATE) |
+----+-----------------------------+
|  4 | 2005-06-03                  |
+----+-----------------------------+
1 row in set (0.00 sec)

使用 BETWEEN 仅将 MySQL 时间戳日期与日期参数进行比较

如果您在 col_datetime 列(具有 TIMESTAMP 类型)上有索引,则以下解决方案将是最快的,因为它可以使用 col_datetime 列上的索引。

例子:

SELECT * FROM date_comparison
WHERE col_datetime
BETWEEN '2005-06-03 00:00:00' AND '2005-06-03 23:59:59';

输出:

+----+---------------------+
| ID | col_datetime        |
+----+---------------------+
|  4 | 2005-06-03 06:22:11 |
+----+---------------------+
1 row in set (0.00 sec)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便