日期函数修剪DB2中的时间戳

时间:2012-12-10 16:24:24

标签: function date datetime db2

有没有办法修剪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}

3 个答案:

答案 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变量,那么它就是另一个故事。