1

Oracleには、毎日の値の合計を含むテーブルがあります。

私の目標は、このテーブルに日次ではなく月次の値の合計を表示させることです。

私はこのクエリを使用してこれを完了しました:

select to_char(dateid, 'YYYY-MM') as thedate, count(*)
from picture_table
group by to_char(dateid, 'YYYY-MM')
order by 1, 2

ここでの問題は、このOracleテーブルをMySQLのテーブルに転送する必要があることです。MySQLのDATEデータ構造は「YYYY-MM-DD」の形式である必要があるため、「01」が月。

oracleクエリを実行して、すべての日付に-01を追加し、MySQLテーブルに正しくパイプライン化できるようにすることは可能ですか?

4

3 に答える 3

2

TRUNC一般に、この関数を使用して日付を月の最初に切り捨てる方が理にかなっています(そしてより効率的です) 。結果の値はタイプになりますDATE

SELECT trunc(dateid, 'MM' ) thedate, count(*)
  FROM picture_table
 GROUP BY trunc(dateid, 'MM')
 ORDER BY 1, 2

あなたの質問で「MySQLへのパイプリエンド」が何を意味するのかは明らかではありません。DATEOracleからMySQLにデータを移動するために使用しているものはすべて、OracleからMySQLDATEまたはへのマッピングを正しく処理できると思いますDATETIME。MySQLにその文字列の暗黙の変換を実行させるためだけに、Oracleの日付を特定の形式の文字列に変換する必要がある場合は、非常に珍しいように思われますDATE

于 2012-07-24T21:52:22.857 に答える
1

あなたは単純な連結でそれをするでしょう:

select to_char(dateid, 'YYYY-MM')||'-01' as thedate, count(*)
from picture_table
group by to_char(dateid, 'YYYY-MM')
order by 1, 2

しかし、なぜmysqlテーブルが日付フィールドを使用しているのですか?「yyyy-mm」形式を受け入れるために、varchar()列を持つことができますか?

于 2012-07-24T21:32:42.450 に答える
1

MySQLでも同じように日付をフォーマットできます。必要なのは、異なる関数だけです。

select date_format(dateid, '%Y-%m') as thedate, count(*)
from picture_table
group by date_format(dateid, '%Y-%m')
order by 1, 2

例はここにあります:http ://sqlfiddle.com/#!2/af6bd/2

date_format()関数の説明:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

于 2012-07-24T21:43:26.710 に答える