我正在处理一项允许用户根据两个参数@START_DATE
和@END_DATE
提取数据的查询。但是,还有另一个日期列(ARCHIVE_DATE
)也与这些日期相关联,对于我的组织中没有关于数据如何存储在表格中的深入了解的人来说,它们确实没有意义。 。我基本上希望将ARCHIVE_DATE
默认为在@START_DATE
参数中输入的日期之前两个月。为了使事情变得更加困难,ARCHIVE_DATE
只能是一个月的第一个日期。因此,如果用户输入' 2015年6月15日'作为@START_DATE
,我希望ARCHIVE_DATE
默认为' 4/1 / 2015'。我在下面提供了一个基本的WHERE
声明,让您知道我想把它放在哪里。
WHERE ACCT_NUM = @ACCOUNT_NUMBER
AND BILL_DATE BETWEEN @START_DATE AND @END_DATE
AND ARCHIVE_DATE = (2 MONTHS PRIOR TO START_DATE AND MUST BE FIRST DATE OF MONTH)
答案 0 :(得分:0)
逻辑是减去1比当月的当天少两个月。我认为以下是如何在DB2中实现此逻辑:
cmp -b file1.txt file2.txt
file1.txt file2.txt differ: byte 8, line 1 is 15 ^M 12 ^J
类似的方法使用ARCHIVE_DATE = (@START_DATE - (DAY(@START_DATE) - 1) DAYS) - 2 MONTHS
:
TRUNCATE()