2016-09-06 11 views
1

データベースにvarcharフィールドがあり、そのフィールドのフォーマットは'10 2月2016 08:26 PM 'のようです。Mysqlは日付時刻を比較します

今後のデータを取得したいのですが、どうすれば入手できますか?

$ctime=strtotime(date("Y-m-d H:i:s")); 

if($type=='1'){ 
    $books = $objData->getAll("select * 
           from bookings 
           where custID='".$custID."' 
           and fromTime>'".$ctime."'"); 
} 

しかし、私は正しい結果を得ていない、助けてください。

+1

あなたはVARCHARが比較されているので、あなたが右reslutを取得されていません。なぜ、datetimeに有効な型 "datetime"を使用しないのですか? –

+1

データベースに有効なmysqlの日付形式を使用し、ブラウザに情報を表示するときにユーザーのためにフォーマットする必要があります。 – jeroen

+1

日付と時刻を操作する場合は、日付/時刻形式にキャストします。文字列データに基づいて比較しないでください。 Varcharとして日付をvarcharとして保存する理由は何ですか? – xQbert

答えて

3

まず、コメントに記載されているように、日付に適切なタイプを使用する必要があります。あなたの質問に答えるために、STR_TO_DATE mysql関数を使用して達成することはまだ可能です。

$objData->getAll("select * from bookings where custID=".$custID."' 
AND unix_timestamp(STR_TO_DATE(fromTime, '%d %b %Y %h:%i %p')) > ".time()); 

リンク:もちろんConvert VARCHAR timestamp to TIMESTAMP?

+0

Thanx、その働き。 –

+0

私はunix_timestamp(STR_TO_DATE(fromTime、 '%d%b%)をフェッチしようとすると、そのシナリオは1シナリオ(時には時間または分で00がある場合は、19 sep 2016 00:10 AM) %h:%i%p ')) –

+0

am/pmを使用している場合は、12h形式の「12:10 AM」にする必要があります。何とか24時間です。分は大丈夫です。すべてのフォーマットのリンクは次のとおりです:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-formatこれが不一致の唯一のケースであるならば、これはうまくいくかもしれません: '' * custID = "。$ custID。" 'unix_timestamp(STR_TO_DATE(REPLACE(fromTime、'00:'、'12: ') %d%b%Y%h:%i%p '))> ".time()" –

関連する問題