2012-06-13 27 views
0

我有此代碼選擇2012年4月23日的日期。它應該返回字母'A',而是返回字母'G'。從日期提取日的案例聲明

SELECT 
case to_char(

(select pp.datestart 
from adempiere.pp_order pp 
where pp.datestart = '2012-04-23' 
limit 1) 

, 'day') 
when 'monday' 
then 'A' 
when 'tuesday' 
then 'B' 
when 'wednesday' 
then 'C' 
when 'thursday' 
then 'D' 
when 'friday' 
then 'E' 
when 'saturday' 
then 'F' 
else 'G' 
end as test 

我已經選擇使用這一天本身

to_char(
(select pp.datestart 
from adempiere.pp_order pp 
where pp.datestart = '2012-04-23' 
limit 1) 
, 'day') as Day 

,並顯示一天「星期一」

這有什麼錯我的case語句?

回答

0

to_char(date, 'day')將空白填充的字符串返回爲9個字符:reference

1

我會用EXTRACT避免與語言設置問題:

SELECT 
    CASE EXTRACT(DOW FROM pp.datestart) 
     when 1 then 'A' 
     when 2 then 'B' 
     when 3 then 'C' 
     when 4 then 'D' 
     when 5 then 'E' 
     when 6 then 'F' 
     else 'G' 
    END as test 
FROM 
    adempiere.pp_order pp 
WHERE 
    pp.datestart = '2012-04-23' 
LIMIT 1;