我正在攻读SQL考试,我在the study-guide中看到以下代码作为正确答案;
UPDATE promotions
SET promo_cost = promo_cost + 100
WHERE TO_CHAR(promo_end_date, 'yyyy'>'2000';
此代码如何工作?我指的是它的TO_CHAR部分。这也是缺少的括号:
WHERE TO_CHAR(promo_end_date, 'yyyy') > '2000';
谢谢!
答案 0 :(得分:2)
我不确定,如果输入错误,但您错过了)
UPDATE promotions
SET promo_cost = promo_cost + 100
WHERE TO_CHAR(promo_end_date, 'yyyy') > '2000';
答案 1 :(得分:2)
您提供的示例采用日期变量promo_end_date
和日期格式'yyyy'
并返回所提供格式的字符串,因此只是日期的'yyyy'
部分。
因此TO_CHAR(promo_end_date, 'yyyy')
会返回年份4位数年份,例如(2000年,2001年,1990年等)
对于结尾数据大于2000的所有宣传片,update语句应该将promo_cost增加100.希望这会有所帮助。
您可以在Oracle SQL中试用它:
select TO_CHAR('01-JAN-99', 'mm/dd/yyyy') from dual; --should return the string '01/01/1999'
select TO_CHAR('20-APR-15', 'dd/mm') from dual; --should return '04/20'
您应该检查Oracle文档,所有内置函数都有详细记录:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm