2016-12-16 7 views
1

データ型がタイムスタンプのフィールド "created_at"を含むテーブルがあります。私はそれをDATEに変更したくない。dd-mm-yyyy形式の日付を持つタイムスタンプに基づいてテーブルを照会する方法

このテーブルをクエリして、日のすべての行をdd-mm-yyyyの形式で取得できますか。

注:私が試した 一つの方法は次のとおりです。 a)の夜12時00分00秒 BでYYYY-MM-DD CONCATENATEに日付を取るには)夜12時00分00秒でYYYY-MM-DD CONCATENATEに次の日付を取ります とその日のすべてのレコードを取得するには、クエリの下に使用します。

SELECT * 
    FROM news 
WHERE created>='2016-12-13 00:00:00'AND 
created < '2016-12-14 00:00:00' 

が、これは私の問題に良い解決策です。この問題に対するより良いアプローチ。

答えて

1

MySQL cast()機能を使用できます。

SELECT 
    * 
FROM news 
WHERE CAST(created_at AS DATE) = '2016-12-13' 

これにより、タイムスタンプの時刻コンポーネントが破棄され、日付のみの比較が行われます。

参考:http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html

+0

おかげでたくさんの作業... –

+0

を行くことができます:00:00は働いていましたが、キャスティングは確かに安全なオプションです。 – flynorc

+0

私はこのhttp://stackoverflow.com/questions/17449920/mysql-find-entries-from-specyfic-day-using-timestampも使用できますか-collumn –

0

あなたは列のデータ型を変更したくないなら、あなたはまた、ちょうど00 ommitting私のために、このコードで

$startDate = strtotime('2016-12-13'); // it will convert date to timestamp format. 
$endDate = strtotime('2016-12-15'); 
$query = "SELECT * FROM news WHERE created >= '$startDate' AND created < '$endDate'"; 
関連する問題