从日期提取日期时的案例陈述

时间:2012-06-13 07:29:33

标签: postgresql case to-char

我有这段代码来选择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

并将当天显示为“星期一”

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

to_char(date, 'day')将字符串空白填充返回到9个字符:reference