2016-12-05 17 views
-2

photoという名前の表にifd0_DateTimeの列があり、日付時刻は次の形式になります。1966:12:22 17:19:57。 毎月の写真の月の数を数える必要があります。SQL照会から正しい形式の日付時刻を取得

これまでのところ私はこのクエリを持っています。正しく動作しません。

SELECT ifd0_DateTime, count(*) FROM photo group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime);

誰もがこの問題を解決してくださいもらえますか?

+0

どのようにクエリが機能しませんか? –

+0

後で修正しました。 – piyush121

+0

なぜdownvotes?私はこの質問を削除すべきですか? – piyush121

答えて

2
SELECT STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m'), 
     COUNT(*) AS dateCnt 
FROM photo 
GROUP BY STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m') 
+0

エラーコード:1582.ネイティブ関数 'STR_TO_DATE'の呼び出しで不適切なパラメータ数 – piyush121

+0

@ piyush121コンマがありませんでした。 –

+0

完全に動作します。あなたも私の投票を得る! – piyush121

1

代わりのdateYearMonth

この

SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) 
FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime) 
+0

downvoteの理由:/ –

0
SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime); 

を試してみてください選択し、あなたがそれを意味しますか?

1

日付時刻を保存する適切な方法は、組み込みのデータ型を使用することです。しかし、値を文字列として保存しているようです。その場合は、最初の7文字だけを入力してください:

SELECT LEFT(ifd0_DateTime, 7) as yyyymm, count(*) 
FROM photo 
GROUP BY LEFT(ifd0_DateTime, 7) 
ORDER BY yyyymm; 

ただし、実際にデータを修正する必要があります。

+0

ひどく失敗します。これはすでに日付時刻形式です。 – piyush121

+2

@ piyush121。 。 。値に対してLEFT()を使用する答えを受け入れる*と仮定すると、それはすでに「日付時刻形式」にあるとは考えにくいです。あなたは文字列と 'datetime'の違いを理解していますか?それが 'datetime'の場合、なぜそれを文字列のように扱う答えを受け入れましたか? –

+0

私は間違っているかもしれません。私はそれが有効な日時であるかどうか尋ねていると思っていました。しかし、あなたの質問はあいまいな結果をもたらしました。 – piyush121

関連する問題