15

レコードが 1 か月のデータベースから行を取得する必要があります。私はこのSELECTを試しました:

$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");

データベースには、11 月の日付を持つ行がたくさんありますが、結果が得られません。誰でも私を助けることができますか?感謝!

4

4 に答える 4

31

DATEPARTMySQL には機能がありません。代わりにMONTH(date_column)またはを使用してください。EXTRACT(MONTH FROM date_column)

于 2012-11-15T16:57:50.733 に答える
5
    SELECT * FROM my_table WHERE MONTH(date_column)=11
于 2012-11-15T16:34:48.323 に答える
2

date_columnにインデックスがあり、パフォーマンスが心配な場合は、列に関数を適用しない方がよいでしょう。(この解決策は、あなたが尋ねたものを正確に答えないでください、それは年も含むので、注意してください)

-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01' 
  and date_column < '2012-11-01' + INTERVAL 1 MONTH

(mysqlフィドル)

-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
  and date_column < DATEADD(month,1,'2012-11-01')

(tsqlフィドル)

于 2012-11-15T17:08:16.540 に答える