1

現在、データ ウェアハウスを Oracle から SQL Server 2012 に移行中です。

私が Oracle で 1 日に 100 回使用するコードの 1 つは、次のようなものを使用してクエリの日付形式を変更することです。

To_Char(entry_date,'WMMYY') = 30612 

上記により、日付を取得し (デフォルトの形式 = DD-MON-YYeg 01-JAN-12)、指定した週 (上記の例では 6 月の第 3 週) の形式を、目的の週をリストするだけで変更できます。

私の考えでは、上記は非常にシンプルで使いやすいです。問題なく、必要な形式(MMYY、MMYYYY)などに変更できます。これまでのところ、SQL Server 2012 でこれを行う簡単な方法を見つけることができず、本当に気になり始めています。それdatetime2はSQL Serverにあります。

私は何かを見つけてCAST(), CONVERT(), DATEPART()いますが、私が見たものからは、あらゆる種類の風変わりなコーディングと数字コード (101、102 など、これがなぜなのかわかりません) が必要であり、無関係で複雑すぎるように思えます。

探しているものがまだ見つからないのでしょうか、それとも SQL Server の場合と同じでしょうか? 200 文字のコードを追加することなく、6 月または 10 月の第 2 週に入力されたすべてのデータを取得するなどの単純なことを実行できるようにしたいだけです。

4

1 に答える 1

0

スイッチです。あなたはSQL Server 2012を使用しているので、FORMAT()機能を調べてください。. _ そうでない私たちにとって、一度慣れれば素晴らしいことができることがいくつかあります。これは SQL Server に固有のものではありませんが、月の週は組織によって異なります。そのため、月の第 3 週などの良い例を得るには、それを定義する必要があります。また、DATEPART週または日の引数を使用する場合は、何を返すかは、週の最初の曜日 (1 -7 - @@DATEFIRST) の設定によって決まります。の数値スタイルCONVERT(再度確認してくださいFORMAT()2012 を使用している場合) は間違いなく直感的ではありませんが、同じスタイルを何度も使用している可能性があり、すぐに覚えることができます。「WMMYY」に設定されている場合、または満足のいく組み込みソリューションがないものを何度も使用する場合は、UDF.

6月中に入力されたデータ

   DATEPART(mm,@date) = 6

今月

  month(getDate())

もしくは今週

  DATEPART(ww,GetDate())
于 2012-06-13T01:34:59.780 に答える