db2 日期相减

表A字段created_date保存的格式为201212311542currentdate当前日期TIMESTAMP格式化时间SELECT(CASEWHEN(day(TI... 表 A 字段created_date 保存的格式为201212311542 current date当前日期 TIMESTAMP格式化时间
SELECT ( CASE
WHEN (day (TIMESTAMP (s.created_date)) - day (current date))<0 THEN '已到期'
else day (TIMESTAMP (s.created_date)) - day (current date)
END ) as t
FROM A as s
妈的这条sql我搞成大于就没错搞成小于就有问题 谁能帮我解决啊 数据库是db2
展开
 我来答
匿名用户
2012-12-31
展开全部
你这个可能是 CASE WHEN 的问题

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

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

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

TO_CHAR(day (TIMESTAMP (s.created_date)) - day (current date), '999' )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱连连看55
推荐于2017-11-25 · TA获得超过185个赞
知道答主
回答量:76
采纳率:0%
帮助的人:69.7万
展开全部
阿凡达是分是分和分红是分三是分的和时尚生活是分的合法是的是的分发挥
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangjuan314
2016-02-18 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2804万
展开全部
简单方法:
使用 days
字符型的日期:2012-01-01,2012-01-11
values days(date('2012-01-11')) - days(date('2012-01-01'))

--获取当前日期:

select current date from sysibm.sysdummy1;
values current date;

--获取当前日期
select current time from sysibm.sysdummy1;
values current time;
--获取当前时间戳
select current timestamp from sysibm.sysdummy1;
values current timestamp;

--要使当前时间或当前时间戳记调整到GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器:

values current time -current timezone;
values current timestamp -current timezone;

--获取当前年份
values year(current timestamp);

--获取当前月
values month(current timestamp);

--获取当前日
values day(current timestamp);

--获取当前时
values hour(current timestamp);

--获取分钟
values minute(current timestamp);

--获取秒
values second(current timestamp);

--获取毫秒
values microsecond(current timestamp);

--从时间戳记单独抽取出日期和时间
values date(current timestamp);
values VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd');
values char(current date);
values time(current timestamp);

--执行日期和时间的计算

values current date+1 year;
values current date+3 years+2 months +15 days;
values current time +5 hours -3 minutes +10 seconds;

--计算两个日期之间的天数
values days(current date)- days(date('2010-02-20'));

--时间和日期换成字符串
values char(current date);
values char(current time);

--要将字符串转换成日期或时间值
values timestamp('2010-03-09-22.43.00.000000');
values timestamp('2010-03-09 22:44:36');
values date('2010-03-09');
values date('03/09/2010');
values time('22:45:27');
values time('22.45.27');

--计算两个时间戳记之间的时差:
--秒的小数部分为单位
values timestampdiff(1,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--秒为单位
values timestampdiff(2,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--分为单位
values timestampdiff(4,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--小时为单位
values timestampdiff(8,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--天为单位
values timestampdiff(16,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--周为单位
values timestampdiff(32,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--月为单位
values timestampdiff(64,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--季度为单位
values timestampdiff(128,char(current timestamp - timestamp('2010-01-01-00.00.00')));
--年为单位
values timestampdiff(256,char(current timestamp - timestamp('2010-01-01-00.00.00')));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式