2017-11-04 6 views
0

私は特定のwhere節なしでMySQL TIMESTAMPカラムを1日ごとにグループ化するのに苦労しています。MySQLのTIMESTAMPカラム - 日別グループ

目的は、データベース内の個々の日のリストを出力することです。現在、集計されていない列に関してはエラーが発生します。

SELECTリストはGROUP BY句にはなく、非集約カラムcreated_atを含んでいますが、GROUP BY句のカラムには依存しません。これはsql_mode = only_full_group_byと互換性がありません。

私のクエリは次のとおりです。selectgroup by両方で

SELECT created_at FROM audits GROUP BY DATE('created_at'); 

答えて

1

使用date()。または、select distinctを使用してください:

SELECT DISTINCT DATE(created_at) 
FROM audits; 

質問には2つのエラーがあります。 DATE('created_at')の式は、文字列の値をDATE()としています。この場合、date()NULLを返しますが、これは有用ではありません。

一重引用符(投稿の成果物である可能性があります)を削除しても、依然としてあなたが述べたエラーが表示されます。 SELECT DISTINCT DATE(created_at)またはSELECT DATE(created_at)/GROUP BYは、この問題を修正します。

0

合計またはカウント機能を使用していないため、現在のクエリではグループが必要ありません。あなたは現在、createdetフィールドに格納されている日時を持っていると思います。あなたが望むのは、 'CAST(created_at AS date)のようなものになる日付形式にキャストすることです。これはあなたに時間のない日を与えます。完全なクエリ:

Select CAST(created_at AS Date) AS New_Date FROM audits

0

あなたは、クエリの下に試すことができます。

SELECT created_at FROM audits GROUP BY date_format('created_at','%d');

SELECT date_format('created_at','%d')as created_at_month,count(*) FROM audits GROUP BY date_format('created_at','%d');

similarly use // for year : '%Y' // for month : '%m' // for hour : '%H'

関連する問題