有没有办法修剪DB2日期函数中的时间戳?
有DB2 select语句,我从数据堆中选择一个日期并将其保存到变量中。然后我使用该变量作为另一个db2选择的参数,通过向它添加30天,但我认为它不同意它添加到结尾的时间戳。
Select business_date From DB2INST1.BusDate Where key = 0
数据库中没有此日期的时间戳,但是它将'12:00:00AM'添加到结尾
它将此选择保存到变量中,我在另一个选择
中使用它where expirdate > (DATE(@BusDate) + 30 DAYS)
我收到此错误:
{“ERROR [428F5] [IBM] [DB2 / AIX64] SQL0245N例程\”DATE \“的调用是不明确的。位置”1“的参数不是最合适的。”}系统。异常{IBM.Data.DB2.DB2Exception}
答案 0 :(得分:1)
尝试
where expirdate > DATE(@BusDate + 30 DAYS)
答案 1 :(得分:1)
选择营业日期作为varchar / string
Select varchar_format(business_date,'YYYY-MM-DD')
然后执行此操作以便稍后使用,将其转换为日期然后使用日期函数向其添加30天:
(DATE(to_date(@BusDate, 'YYYY-MM-DD') + 30 DAYS))
答案 2 :(得分:0)
第一个SELECT语句和第二个SELECT语句是同一存储过程的一部分吗?您是否将结果日期存储在任何.Net变量中?如果您将它存储在.Net DateTime变量中,我的建议是在.Net代码本身中执行date addition
操作。然后在传递给数据库之前从变量中删除时间部分。
请看一下:Datetime field overflow with IBM Data Server Client v9.7fp5
如果两个SELECT语句都是存储过程的一部分并且没有调用.Net DateTime变量,那么它就是另一个故事。