有人可以帮我将此 sqlite 查询转换为 postgres 查询吗?
Can someone help me convert this sqlite query to a postgres query?
SELECT substr(strftime('%Y', date),3,2) AS month, 0 AS zero FROM listvalue
我在 SQLite 中有这个查询,当我将它导入 Postgres 时,我在翻译 substr(strftime('%Y', date),3,2)
部分时遇到问题。
您可以将带有 TO_CHAR
函数的表达式转换为 PostgreSQL:
SUBSTR(TO_CHAR(date, 'YYYY'), 3, 2)
注意:%Y
格式将 return 日期的年份,而不是查询建议的月份。
SQLite 查询将 return 日期年份的最后一位数字。您可以使用适当的格式在 PostgreSQL 调用中省略 SUBSTR
:
TO_CHAR(date, 'YY')
substr(strftime('%Y', date),3,2)
提取列 date
的年份部分的最后 2 位数字,但在您的代码中您将其别名 as month
!
如果你想在 Postgresql 中做同样的事情,你可以使用 extract()
获取年份,将其类型转换为 varchar
并使用 substr()
获取最后 2 个字符:
substr(extract(year from date)::varchar, 3, 2)
我们怀疑您要从日期列中提取年份值的最后两位。 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;
谢谢,
Renuka N.
SELECT substr(strftime('%Y', date),3,2) AS month, 0 AS zero FROM listvalue
我在 SQLite 中有这个查询,当我将它导入 Postgres 时,我在翻译 substr(strftime('%Y', date),3,2)
部分时遇到问题。
您可以将带有 TO_CHAR
函数的表达式转换为 PostgreSQL:
SUBSTR(TO_CHAR(date, 'YYYY'), 3, 2)
注意:%Y
格式将 return 日期的年份,而不是查询建议的月份。
SQLite 查询将 return 日期年份的最后一位数字。您可以使用适当的格式在 PostgreSQL 调用中省略 SUBSTR
:
TO_CHAR(date, 'YY')
substr(strftime('%Y', date),3,2)
提取列 date
的年份部分的最后 2 位数字,但在您的代码中您将其别名 as month
!
如果你想在 Postgresql 中做同样的事情,你可以使用 extract()
获取年份,将其类型转换为 varchar
并使用 substr()
获取最后 2 个字符:
substr(extract(year from date)::varchar, 3, 2)
我们怀疑您要从日期列中提取年份值的最后两位。 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;
谢谢, Renuka N.