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

并将日期显示为“星期一”

我的案例陈述有什么问题吗?

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 回答