mysql比较一个varchar列和date(now)给出错误的结果。(我不能改变表。)

时间:2013-05-11 07:37:33

标签: asp.net mysql datetime

我有一个包含以下属性的表

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现在实际上已经少了。请帮我纠正查询。提前完成。

1 个答案:

答案 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())