私はテーブルを持っています
NUM | TDATE
1 | 200712
2 | 200708
3 | 200704
4 | 20081210
mytable
として作成される場所
mytable
(
num int,
tdate char(8) -- legacy
);
tdate の形式は YYYYMMDD です。このdate
部分はオプションの場合もあります。
したがって、「200712」などの日付は 2007-12-01 と解釈できます。
tdate
日付列として扱い、日付比較を適用できるようなクエリを書きたいと思います。
お気に入り
select num, tdate from mytable where tdate
between '2007-12-31 00:00:00' and '2007-05-01 00:00:00'
これまでのところ、私はこれを試しました
select num, tdate,
CAST(LEFT(tdate,6)
+ COALESCE(NULLIF(SUBSTRING(CAST(tdate AS VARCHAR(8)),7,8),''),'01') AS Date)
from mytable
上記の変換された日付 (3 列目) を比較に使用するにはどうすればよいですか? (参加が必要ですか?)
また、これを行うためのより良い方法はありますか?
編集: 今のところ、テーブル スキームを制御することはできません..DB チームに変更を提案しました..今のところ、 char(8) に固執する必要があります。