2012-02-03 6 views
0

データベースに日付がvarchar(2011年9月11日)として保存されています。私はこのようなクエリを作成しようとしています:日付を文字列として保存

$result=mysql_query("SELECT * FROM post WHERE YEAR(STR_TO_DATE(datum,'%e %M %Y') ='2011')") or die(mysql_error()); 

返すのはNULLです。

+1

率直に言って、私はちょうど 'date'データ型にフィールドを変換すると思います。 – JJJ

答えて

1

例:

SELECT * FROM post WHERE YEAR(STR_TO_DATE(datum,'%d %M %Y'))= 2011; 

SELECT YEAR(STR_TO_DATE('11 September 2011','%d %M %Y')); 
+0

それdoesnt仕事;) – InTry

+0

@InTry今これをチェックしてください –

+0

うまく動作します。今すぐ動作します:)、ありがとう – InTry

3

フィールドの種類がvarcharの場合は、この形式を使用できます。

$result=mysql_query("SELECT * FROM post WHERE datum LIKE '%2011'") or die(mysql_error()); 
+0

それはちょうど私が探していたものではありませんが、それは仕事をします、ありがとう – InTry

+1

@InTryは私の答えをチェックアウト、これは実際にあなたが探しているものです –

-1

...あなたがvarchar()としてデータベースに追加しているので、あなたが答えを得ることはありませんそしてちょうどMySQLフォーラムからこのフォーラムの投稿を参照し、解決策を修正select * from table name where column name="2011"

0

あなたは、将来のために、データベースのテーブルにdatetime型の列の型を変更する必要があります。たとえば、加算、減算、カウントダウンなどを行うにはdatetimeが必要な場合があります。したがって、比較や検証をしたい場合は、これが簡単になります。したがって、以下のようにmysqlステートメントを簡単に行うことができます。

SELECT something FROM tbl_name WHERE column_name < = date_col;

関連する問題