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 展开
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 展开
3个回答
2012-12-31
展开全部
你这个可能是 CASE WHEN 的问题
第一种情况下, 结果是 字符类型的 ‘已到期’
第二种情况下, 结果是 数字类型的
也就是你一个查询, 其中某一列的数据类型, 又是字符, 又是数字的。
导致查询出现错误了。
你尝试在后面那里 加一个 TO_CHAR() 看看
TO_CHAR(day (TIMESTAMP (s.created_date)) - day (current date), '999' )
第一种情况下, 结果是 字符类型的 ‘已到期’
第二种情况下, 结果是 数字类型的
也就是你一个查询, 其中某一列的数据类型, 又是字符, 又是数字的。
导致查询出现错误了。
你尝试在后面那里 加一个 TO_CHAR() 看看
TO_CHAR(day (TIMESTAMP (s.created_date)) - day (current date), '999' )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单方法:
使用 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')));
使用 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')));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询