Извлечь новый столбец на основе отметки времени - PullRequest
0 голосов
/ 30 августа 2018

У меня есть столбец 'customer_date' с текстом типа данных.

На основе времени, которое мне нужно для получения нового столбца

Состояние:

  • когда customer_date <12, тогда «AM», иначе «PM </li>

1011 *
*

customer_date

01Mar2018 10:03:54
02Mar2018 13:03:54

ожидаемый результат

  customer_date             session

01Mar2018 10:03:54        AM
02Mar2018 13:03:54        PM

Это выдает ошибку, когда я написал

select 
case EXTRACT(HOUR FROM customer_date)<12 then 'AM' else 'PM' end as session
from my table;

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы забыли добавить WHEN в CASE WHEN, как сказал @Gordon Linoff.

Существует простой способ, используя TO_CHAR вместо CASE WHEN.

использовать для TO_CHAR

AM, am, PM or pm получит меридием индикатора (без периодов)

CREATE TABLE myTable(customer_Date timestamp);

insert into myTable values ('01Mar2018 10:03:54'::timestamp);

insert into myTable values ('02Mar2018 13:03:54'::timestamp);

Запрос 1 :

select customer_Date,TO_CHAR(customer_Date::timestamp, 'AM') as session
from mytable

Результаты

|        customer_date | session |
|----------------------|---------|
| 2018-03-01T10:03:54Z |      AM |
| 2018-03-02T13:03:54Z |      PM |
0 голосов
/ 30 августа 2018

Это работает, когда я проверяю это:

select (case when EXTRACT(HOUR FROM customer_date::timestamp) < 12 then 'AM' else 'PM' end) as session
from mytable;

Я добавил явное преобразование и when.

...