0

mysql の日付フィールドの日付の範囲で日と月の部分を選択しようとしていますが、「オペランドには 1 列を含める必要があります」というエラーが表示されます。tablename は個人の日付フィールド名は dob です

"SELECT *
FROM personal
WHERE (EXTRACT(MONTH
               FROM dob),
       EXTRACT(DAY
               FROM dob)) BETWEEN '$fromdate' AND '$todate'"

dob は日付フィールドであり、$fromdate と $todate は「2014-04-30」や「2014-06-30」などの画面からの日付入力を保持します

4

3 に答える 3

1

句を使用WHEREすると、複数の値を比較できますが、一度に 1 つずつ比較できます。

あなたのステートメントWHEREでは、 と の両方MONTHDAYコンマ区切りの個別の値として使用しようとしていますが、 と を比較して$fromdate$tdateますが、これは正しくありません。

したがって、エラーは次のとおりです。

Operand should contain 1 column(s)

次のような解決策を探しているかもしれません。

$fromdate$todateが の形式の場合mmdd

SELECT * FROM personal
WHERE date_format( dob, '%m%d' ) 
      BETWEEN '$fromdate' AND '$todate'
于 2014-04-16T09:46:10.987 に答える
0

CONCATdob 列から日と月をマージしてから、 between 句を使用して比較するために使用する必要があります

SELECT 
  * 
FROM
  personal 
WHERE
CONCAT(EXTRACT(MONTH FROM dob),'-',EXTRACT(DAY FROM dob))
BETWEEN '$fromdate'   AND '$todate' 

またはDATE_FORMAT、月と日のみを取得するために使用することをお勧めしますが、標準の日付オブジェクトが列に格納されていることを確認し、 DATE_FROMAT指定した形式が指定したパラメーターの形式と一致する必要があります

SELECT 
  * 
FROM
  personal 
WHERE
DATE_FROMAT(dob,'%m-%d')
BETWEEN '$fromdate'   AND '$todate' 
于 2014-04-16T09:44:20.500 に答える