db2 日期相减

db2 日期相减,第1张

你这个可能是 CASE WHEN 的问题

第一种情况下, 结果是 字符类型的 ‘已到期’
第二种情况下, 结果是 数字类型的

也就是你一个查询, 其中某一列的数据类型, 又是字符, 又是数字的。
导致查询出现错误了。

你尝试在后面那里 加一个 TO_CHAR() 看看

TO_CHAR(day (TIMESTAMP (screated_date)) - day (current date), '999' )

建议你在设计表的时候时间类型都设计为TIMESTAMP类型,这样查出来就有时分秒了。如要设计为DATE类型,在程序上还得做转换成TIMESTAMP类型处理,不怕麻烦就用DATE类型也行了。

SELECT
timestampdiff (256, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔年",
timestampdiff (128, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔季度",
timestampdiff (64, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔月",
timestampdiff (32, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔周",
timestampdiff (16, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔日",
timestampdiff (8, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔时",
timestampdiff (4, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔分",
timestampdiff (2, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔秒"
FROM SYSIBMSYSDUMMY1;
间隔年 间隔季度 间隔月 间隔周 间隔日 间隔时 间隔分 间隔秒
----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
12 49 147 637 4474 107381 6442866 386571967
1 条记录已选择。

DB2数据库获取当前系统时间的方法和 *** 作步骤如下:

1、首先,使用sysdate函数获取当前时间,并执行以下语句:“select sysdate from dual”,如下图所示

2、其次,使用sysdate()获取当前时间,执行以下语句:“select sysdate()”,确保添加括号,如下图所示。

3、接着,对于Gbase数据库(与获取当前时间的Mysql数据库相同),执行以下语句:“select sysdate()”,如下图所示。

4、然后,对于sysbase数据库,获取当前时间的函数是:“select  getdate()”,如下图所示。

5、 随后,DB2数据库略有不同。 要获取当前时间,请使用以下查询sql:“SELECT current timestamp FROM sysibmsysdummy1”,如下图所示。

6、最后,在获取当前时间之后,还希望将当前时间日期向前或向后一段时间。 对于DB2数据库,将当前时间提前一天:“select sysdate-1 from dual”,如下图所示。

select avg(index) from table group by time having time between sysdate-7 and sysdate
time字段如果不是date的,那就先转换再取时间范围

db2中的时间函数有 timestamp, date,month等,可以满足你的要求。
假如你的表里有时间列,那么可以从timestamp里提取year,month等。
select month(current timestamp) from sysibmsysdummy1
这就表示从当前的时间里提取出月份,查询结果为7,表示七月份。
where month(mydatecol)=month(current date)-1
同样你可以再使用year函数来区别不同年份相同月份的数据


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/13365060.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-31
下一篇2025-08-31

发表评论

登录后才能评论

评论列表(0条)

    保存