mysql - 如何在mysql中比较不同格式的字符串作为日期

标签 mysql

我有一个 VARCHAR 字段 dob在 mysql 表中,日期以两种格式保存:

1> y-m-d
2> d/m/y

现在我想选择 dob <= '01/01/1979' (born on or before 01 January, 1979) 的候选人

但我无法理解如何同时比较这两种时间格式。

有什么方法可以处理这种情况,比如将一种格式转换为另一种格式,然后进行比较。

最佳答案

您当前的表设计很糟糕,因为 dob 列是:

  • 将日期信息存储为文本,并在此之上
  • 在同一列中存储两种不同的日期格式

您绝对应该通过将日期信息存储在适当的日期/时间列中来解决这个长期问题。

这是一个临时解决方法:

SELECT *
FROM yourTable
WHERE
    (dob LIKE '%-%' AND STR_TO_DATE(dob, '%Y-%m-%d') < '1979-01-01') OR
    (dob LIKE '%/%' AND STR_TO_DATE(dob, '%d/%m/%Y') < '1979-01-01');

关于mysql - 如何在mysql中比较不同格式的字符串作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51597323/

相关文章:

使用 LEFT JOIN、GROUP BY 和 ORDER BY 进行 MySQL 查询

PHP Swiftlet mysqli 错误

php - 如何计算匹配查询的行数,但只返回 SQL 中的一个子集?

mysql - react 正在将数据发布到控制台,但数据未成功使其成为 mysql 数据库

php - 尝试从 MySQL 数据库 + PHP 删除记录。但不断收到错误消息

php - 如何将连接表的垂直列表转换为水平列表?

php - 将用户 IP 地址与 PHP 中的 sql 数据库条目匹配

java - Mysql更新用户密码

PHP Ajax 分页数组不起作用

mysql - 在 MySQL 上结合 INSERT INTO 和 SELECT