0

有没有办法去掉 DB2 日期函数中的时间戳?

有 DB2 select 语句,我从数据库中选择一个日期并将其保存到一个变量中。然后,我将该变量用作另一个 db2 select 的参数,方法是向其添加 30days,但我认为它与添加到末尾的时间戳不一致。

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\" 中的参数没有最佳匹配。"} System.Exception {IBM .Data.DB2.DB2Exception}

4

3 回答 3

3

选择营业日期作为 varchar/string

 Select varchar_format(business_date,'YYYY-MM-DD')

然后执行此操作以稍后使用它,将其转换为日期,然后使用日期函数将 30 天添加到它:

      (DATE(to_date(@BusDate, 'YYYY-MM-DD') + 30 DAYS))
于 2012-12-13T14:28:40.057 回答
1

尝试

where expirdate > DATE(@BusDate + 30 DAYS)
于 2012-12-10T17:45:42.883 回答
0

第一个 SELECT 语句和第二个 SELECT 语句是同一个存储过程的一部分吗?您是否将结果日期存储在任何 .Net 变量中?如果您将其存储在 .Net DateTime 变量中,我的建议是date addition在 .Net 代码本身中执行操作。然后在传递到数据库之前从变量中删除时间部分。

也看看这个:Datetime field overflow with IBM Data Server Client v9.7fp5

如果两个 SELECT 语句都是存储过程的一部分,并且没有涉及到 .Net DateTime 变量,那么情况就不同了。

于 2013-01-08T16:02:44.153 回答