我有两个表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_reg
与table2.date_reg
)
答案 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()
function将VARCHAR
字段转换为可用于比较的有效日期,例如:
STR_TO_DATE(table1.date_reg, '%m-%d-%Y')
理想情况下,您不想这样做。这不是解决方案,而是用于尝试掩盖现有问题的另一个问题,您的日期存储为VARCHAR
而不是DATE
。
您可以更好地更改导入代码,以便将Excel中的日期(或者您导入的任何位置)导入MySQL的正确DATE
格式。如果你不确定如何做到这一点,我建议用你用来导入数据的代码创建一个新问题,并询问如何以正确的方式对其进行格式化。