好吧,所以我在stackoverflow上检查了很多其他帖子,看看是否在任何地方都提到过,提供的答案对我来说没有意义......我在想他们在说些什么完全不同。
以下是我想要做的事情,使用Oracle SQL Developer:
- 从purch_date
中检索条目- 获取当前年份purch_date和圣诞节之间的差异
* *因此,因此'2012'不能在那里进行硬编码。我需要检索它。
这是MySQL中100%工作的查询:
SELECT purch_id AS PURCH_ID,
DATEDIFF(CONCAT(YEAR(NOW()),'-12-25'), purch_date) AS DAYS_TO_CHRISTMAS
FROM CS260USER.candy_purchase;
差不多,我需要在Oracle工作。
任何人都可以帮我吗?
非常感谢!
马修
答案 0 :(得分:2)
假设purch_date
被定义为DATE
SELECT purch_id,
(trunc(sysdate, 'YYYY') +
interval '11' month +
interval '24' day) -
purch_date days_to_christmas
FROM CS260USER.candy_purchase;
几个笔记
purch_date
有时间组件,您可能希望截断日期减法的结果。purch_date
是12月30日,那么我希望结果是在下一个圣诞节前360天,而不是直到去年圣诞节的-5天。答案 1 :(得分:0)
最简单的方法是在oracle中编写一个像DATEDIFF一样的函数,id就像这样:
function datediff( p_what in varchar2, p_d1 in date, p_d2 in date) return number as l_result number;
BEGIN
select (p_d2-p_d1) *
decode( upper(p_what), 'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL )
into l_result from dual;
return l_result;
END;
并将此函数称为:
DATEDIFF('YYYY-MM-DD', SYSTIMESTAMP, SYSTIMESTAMP)
你的sql命令中的