レコードが1か月分のデータベースから行を取得する必要があります。私はこの試みを試しました:DATEPART()によって行を選択
$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");
データベースには、11ヶ月の日付がある多くの行がありますが、結果は得られません。 誰でも助けてくれますか?感謝!
レコードが1か月分のデータベースから行を取得する必要があります。私はこの試みを試しました:DATEPART()によって行を選択
$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");
データベースには、11ヶ月の日付がある多くの行がありますが、結果は得られません。 誰でも助けてくれますか?感謝!
MySQLにはDATEPART
の機能はありません。代わりにMONTH(date_column)
またはEXTRACT(MONTH FROM date_column)
を使用してください。
SELECT * FROM my_table WHERE MONTH(date_column)=11
+1(MONTH()) –
ありがとう!これは機能します。 – user1827257
date_columnにインデックスがあり、パフォーマンスが懸念される場合は、そのカラムに関数を適用しない方が良いです。あなたのDATEPARTで作業されていない場合
-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < '2012-11-01' + INTERVAL 1 MONTH
-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < DATEADD(month,1,'2012-11-01')
(それはまた、今年含まbecouse、あなたが尋ねまさにこのソリューションは、ないanwsersを行うことに注意してください) MYSQLを使用することができます:
SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());
先月にMyTableに挿入したすべてのレコードを返します。
[廃止処理](http://news.php.net/php.internals/53799)にあるように、mysql_ *関数を使用しないでください。代わりに[MySQLi](http://php.net/manual/en/book.mysqli.php)または[PDO](http://php.net/manual/en/book.pdo.php)を使用してください。より良いPHP開発者](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 –
date_column型は\tの日付 – user1827257
でもエラー処理が最小でも、なぜこれが動作していないのか分かっているはずです。決してクエリーが成功したとは決して考えません。常にエラーをチェックしてください。 –