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

そして、日を「monday」と表示します

ケースステートメントに何か問題がありますか?

4

2 に答える 2

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;
于 2012-06-13T07:44:44.220 に答える
0

to_char(date, 'day')空白が埋め込まれた 9 文字の文字列を返します: reference

于 2012-06-13T07:37:38.600 に答える