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


  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/

10-15 01:48