0

私はsql db2を使用して、引っ越しをする人のために2つのテーブルを日付で結合していますが、テーブルの1つに年しかありません:

select a.person,b.from_date,b.to_date,a.year from table1
join
table2
on a.person = b.person
and a.year between year(b.from_dt) and year(b.to_dt)

しかし、最後の行の a.year に「1st January」を追加したいと思います。(b.from_dt と b.to_dt は完全な日付です)

年とカスタムの日/月を連結する方法はありますか? 現時点では、複製を元に戻しているので、次のようになります

and a.year'01-01' between b.from_dt and b.to_dt

ありがとう!

4

2 に答える 2

0

このロジックは、あなたが望むものに近づきます:

a.year between year(b.from_dt) + 1 and year(b.to_dt)

それが逃す 1 日b.from_dtは 1 月 1 日です。多くのアプリケーションでは、これは休日であるため、違いはありません。

それが問題である場合は、直接テストできます。

(a.year > year(b.from_dt) or
 (a.year = year(b.from_dt) and month(b.from_dt) = 1 and day(b.from_dt = 1)
) and a.year >= year(b.to_dt)

文字列操作を開始することもできますが、整数演算を使用してこれを行うこともできます。

a.year*10000+101 between year(b.from_dt)*10000+month(b.from_dt)*100+day(b.from_dt) and
                         year(b.to_dt)*10000+month(b.to_dt)*100+day(b.to_dt);
于 2013-08-23T13:45:36.143 に答える