如何比较两个具有varchar作为数据类型的DATES

时间:2014-06-26 11:50:12

标签: php mysql sql database

我有两个表table1和table2

table1包含以下列(id,date_reg,status)

date_reg是一种varchar数据类型,其日期格式类似于此(mm-dd-yyyy)

并且table2包含以下列(id,uname,date_reg)

date_reg是一种varchar数据类型,其日期格式类似于此(mm-dd-yyyy)

我需要与最近日​​期匹配的记录(通过比较table1.date_regtable2.date_reg

4 个答案:

答案 0 :(得分:1)

试试这个

SELECT *
FROM table1,
     table2
WHERE STR_TO_DATE(table1.date_reg, '%m/%d/%Y')=STR_TO_DATE(table2.date_reg, '%m/%d/%Y')

答案 1 :(得分:1)

我不熟悉PHP中的正则表达式/文本解析,但一般策略是将两个字符串拆分为' - ',然后比较年份,然后是月份,那天。在伪代码中:

if table1.year > table2.year:
    return table1.date
else if table1.year < table2.year:
    return table2.date
else:
    if table1.month > table2.month:
        return table1.date
    else if table2.month > table1.month:
        return table2.date
    else:
        if table1.day > table2.day:
            return table1.date
        else if table2.day > table1.day:
            return table2.date
        else:
            return 0

答案 2 :(得分:0)

如果日期格式相同,请使用以下内容:

  

select * from table1 left join table2 ON table1.date_reg = table2.date_reg

或者如果你想要那么条件那么

  

select * from table1 left join table2 ON table1.date_reg = table2.date_reg where table1.date = '06 -05-2014'

答案 3 :(得分:0)

您可以使用MySQL的STR_TO_DATE() functionVARCHAR字段转换为可用于比较的有效日期,例如:

STR_TO_DATE(table1.date_reg, '%m-%d-%Y')

理想情况下,您不想这样做。这不是解决方案,而是用于尝试掩盖现有问题的另一个问题,您的日期存储为VARCHAR而不是DATE

您可以更好地更改导入代码,以便将Excel中的日期(或者您导入的任何位置)导入MySQL的正确DATE格式。如果你不确定如何做到这一点,我建议用你用来导入数据的代码创建一个新问题,并询问如何以正确的方式对其进行格式化。