我正在尝试在用户输入的两个特定日期之间找到数据库中的日期。类似的东西:
选择日期FROM表WHERE日期> = dateFrom AND日期< = dateTO
我有下表:
我错误地将日期保存为VARCHAR,现在我必须执行所有str_to_date和date_format,因为我正在使用phpMyAdmin。我以某种方式做到了但是我使用这个查询面临这个奇怪的问题:
SELECT date_format(str_to_date(data,'%d/%m/%Y'),'%d/%m/%Y') AS data FROM montaggio WHERE data>=date_format(str_to_date('29/08/2014','%d/%m/%Y'),'%d/%m/%Y')
查询只返回19/08/2014
的日期,我希望它返回01/09/2014
。另一方面,如果它输入查询
SELECT date_format(str_to_date(data,'%d/%m/%Y'),'%d/%m/%Y') AS data FROM montaggio WHERE data>=date_format(str_to_date('29/08/2014','%d/%m/%Y'),'%d/%m/%Y') AND data<=date_format(str_to_date('05/09/2014','%d/%m/%Y'),'%d/%m/%Y')
查询不返回任何内容。
我正在使用phpMyAdmin。 我在这里失踪了什么?任何帮助将不胜感激!
答案 0 :(得分:1)
SELECT data
FROM montaggio
WHERE str_to_date(data, '%d/%m/%Y') >= str_to_date('29/08/2014', '%d/%m/%Y')
您似乎理解真正的解决方案,即使用正确的类型在数据库中存储日期/时间。如果你必须使用字符串作为日期,那么总是将它们存储为YYYY-MM-DD,这样比较和排序就能正常工作。