2017-04-12 9 views
0

私はこの問題についてリンクのzilionを読んだが、私が混乱するほど多くを読んだ。
私のDBには、「YYYY-MM-DD」形式の日付列があります。私は、月と年の変化の数を日数に関係なく数える必要があります。私は現在使用しています:もう一度SQLの日付変換

$query = "SELECT COUNT(data) as visits, COUNT(DISTINCT data) as diffentDates ,MIN(data) as 'MIN', MAX(data) as 'MAX' FROM visiting "; 

ここで 'data'は私の列の値です。
これはうまくいきます:訪問の合計、異なる日付の数、最初と最後の訪問を取得します。
問題は 'diffentDates'にあります。それは 'YYMM'の変化のみをカウントすべきです。
私は同じようなものを使用しようとしました:COUNT(DISTINCT (FORMAT (data,'YYMM'))) as diffentDates
しかし、それは私が必要とする(実際にはエラーを出すか、またはすべての日付を選択します)。
「YYYY-MM-DD」から「YYMM」への翻訳(および選択とカウント)に適用する正しい機能は何ですか?
おかげ

+1

列データのSQLタイプは何ですか? TIMESTAMP?日付? DATE_FORMAT()関数をDISTINCTと一緒に使うことができます –

答えて

1

データは、以下が動作するはずです、TIMESTAMPまたはDATE型の場合:

SELECT 
    COUNT(`data`) as visits, 
    COUNT(DISTINCT DATE_FORMAT(`data`,'%Y%m')) as diffentDates, 
    MIN(`data`) as 'MIN', 
    MAX(`data`) as 'MAX' 
FROM `visiting` 
関連する問題