0

次の属性を持つテーブルがあります

id(int)  |  shift_id(int)  |  emp_id(int)  |  start_date(varchar)

列 startdate は実際に日付を形式で格納します- "dd/MM/yyyy"(asp.netから)

ここで、開始日が今日よりも大きいすべての結果をフィルタリングする必要があるクエリを実行する必要があります

だから私は次のクエリを書きました

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 は実際には現在よりも短くなっています。クエリを修正するのを手伝ってください。事前にサンクス。

4

1 に答える 1

1

日付形式が次の場合:

dd/MM/yyyy

これを使用する必要があります:

STR_TO_DATE(start_date,'%d/%m/%Y') > DATE(NOW())

それ以外の:

STR_TO_DATE(start_date,'%m/%d/%Y') > DATE(NOW())
于 2013-05-11T07:39:24.483 に答える