我有一个包含以下属性的表
id(int) | shift_id(int) | emp_id(int) | start_date(varchar)
列startdate实际上以格式存储日期 - "dd/MM/yyyy"
(来自asp.net)
现在我必须执行一个查询,其中我必须过滤所有结果,其中startdate今天更大
所以我写了以下查询
SELECT *, STR_TO_DATE(start_date,'%d/%m/%Y'), DATE(NOW())
FROM emp_shift_relation
WHERE
STR_TO_DATE(start_date,'%m/%d/%Y') > DATE(NOW())
但是我得错了结果。 我得到的一些值如下
"id" "shift_id" "emp_id" "start_date" "STR_TO_DATE(start_date,'%d/%m/%Y')" "DATE(NOW())"
"335" "2" "115" "06/04/2013" "2013-04-06" "2013-05-11"
"340" "1" "118" "06/04/2013" "2013-04-06" "2013-05-11"
"349" "2" "121" "06/04/2013" "2013-04-06" "2013-05-11"
"353" "2" "123" "06/04/2013" "2013-04-06" "2013-05-11"
"357" "1" "125" "06/04/2013" "2013-04-06" "2013-05-11"
"361" "2" "129" "06/04/2013" "2013-04-06" "2013-05-11"
"367" "2" "131" "06/04/2013" "2013-04-06" "2013-05-11"
"371" "1" "132" "06/04/2013" "2013-04-06" "2013-05-11"
正如您所看到的,start_date现在实际上已经少了。请帮我纠正查询。提前完成。
答案 0 :(得分:1)
如果您的日期格式为:
dd/MM/yyyy
你需要使用它:
STR_TO_DATE(start_date,'%d/%m/%Y') > DATE(NOW())
而不是:
STR_TO_DATE(start_date,'%m/%d/%Y') > DATE(NOW())