Может ли кто-нибудь помочь мне преобразовать этот sqlite-запрос в запрос postgres? - PullRequest
0 голосов
/ 08 июля 2019
SELECT substr(strftime('%Y', date),3,2) AS month, 0 AS zero FROM listvalue

У меня есть этот запрос в SQLite, когда я импортирую его в Postgres, у меня возникают проблемы с переводом части substr(strftime('%Y', date),3,2).

Ответы [ 3 ]

0 голосов
/ 08 июля 2019

substr(strftime('%Y', date),3,2) извлекает последние 2 цифры части года столбца date, но в вашем коде вы используете псевдоним as month!если вы хотите сделать то же самое в Postgresql, вы можете использовать extract(), чтобы получить год, введите его в varchar и использовать substr(), чтобы получить последние 2 символа:

substr(extract(year from date)::varchar, 3, 2)
0 голосов
/ 09 июля 2019

Мы подозреваем, что вы хотите извлечь последние две цифры значения года из столбца даты.Функция strftime () не будет работать на сервере Postgres.Итак, предложите вам использовать любой из приведенных ниже запросов, чтобы удовлетворить ваши требования:

SELECT substring(date_part('year', date)::varchar, 3, 2) AS year, 0 AS zero FROM listvalue;  

SELCT to_char(shipped_date, 'YY'), 0 AS zero from listvalue;

Спасибо, Ренука Н.

0 голосов
/ 08 июля 2019

Вы можете перевести выражение с помощью функции TO_CHAR в PostgreSQL:

SUBSTR(TO_CHAR(date, 'YYYY'), 3, 2)

Примечание: формат %Y будет возвращать год даты, а не месяц какВаш запрос предлагает.

Запрос SQLite будет возвращать последние цифры года.Вы можете опустить SUBSTR в вызове PostgreSQL, используя соответствующий формат:

TO_CHAR(date, 'YY')
...