1

「YYYYMMDD」の形式でデータベースに保存されている日付からの日数を計算する必要があるクエリを作成しています。これは Date データ型ではないため、ネイティブの Date 関数を使用できません。SQLクエリでそのような計算を実行するための最良の方法(パフォーマンス、読みやすさなど)は何ですか?

4

2 に答える 2

3

一番?その古いテーブルを変換して、実際の日付列を使用します。

次善?YYMMDD を実際の日付に変換するデータベース関数を作成します。Alan Campin の iDate が役に立ちます。あなたは似たようなものになってしまうでしょうselect cvty2d(date1)-cvty2d(date2) from ...

何もないよりマシ?数字を文字に変換し、文字を分割し、ハイフンを追加し、それを実際の日付に変換する醜い SQL を作成します。その獣は次のようになります

select 
  date(
     substr(char(date1),1,4) concat 
     '-' concat 
     substr (char(date1),5,2) concat 
     '-' concat 
     substr(char(date1),7,2)
  )  - 
  date(
     substr(char(date2),1,4) concat 
     '-' concat 
     substr (char(date2),5,2) concat 
     '-' concat 
     substr(char(date2),7,2)
  )   
from ...

編集これらの体操が必要な理由は、DB2 DATE() 関数が「YYYY-MM-DD」の形式で文字列を表示する必要があるためです。ハイフンが必要です。

于 2012-05-09T19:20:50.640 に答える
0

どのバージョンのSQLを実行していますか?SQL2008には、日付データ型としてのその形式に関する問題はありません。

Declare @something nvarchar(100)
set @Something = '20120112'

select dateadd(dd, 1, @Something)
select datediff(dd, @Something, getdate())

2012-01-13 00:00:00.000

118

于 2012-05-09T18:52:11.920 に答える