有人可以帮助我将此sqlite查询转换为postgres查询吗?

时间:2019-07-08 14:12:31

标签: postgresql sqlite syncfusion

SELECT substr(strftime('%Y', date),3,2) AS month, 0 AS zero FROM listvalue

我在SQLite中有此查询,当我将其导入Postgres时,在翻译substr(strftime('%Y', date),3,2)部分时遇到问题。

3 个答案:

答案 0 :(得分:0)

您可以使用TO_CHAR函数将表达式转换为PostgreSQL:

fig, axs =plt.subplots(2,1)
sns.catplot(x = 'day',y = 'count',data=day_of_month_count,
            kind ='bar',
            height = 8 , aspect= 1.5,ax=axs[0])
sns.catplot(x = 'month',y = 'count',data=month_of_the_year_count,
           kind ='bar',
           height = 8 , aspect= 1.5,ax=axs[1])

注意:格式SUBSTR(TO_CHAR(date, 'YYYY'), 3, 2) 将返回日期的年份,而不是查询所提示的月份。

SQLite查询将返回日期的最后一位数字。您可以使用适当的格式在PostgreSQL调用中省略%Y

SUBSTR

答案 1 :(得分:0)

substr(strftime('%Y', date),3,2)提取列date的年份部分的后两位数字,但是在代码中您将其别名为as month
如果要在Postgresql中执行相同的操作,则可以使用extract()获取年份,将其强制转换为varchar,然后使用substr()获取最后2个字符:

substr(extract(year from date)::varchar, 3, 2)

答案 2 :(得分:-1)

我们怀疑您要从日期列中提取年份值的后两位。 strftime()函数在Postgres服务器中不起作用。因此,建议您使用以下任一查询来满足您的要求

    a  b  c
1   1  2  3
2   2  3  4
3   3  0  5
4   4  5  6
5   5  0  7
6   6  7  8

谢谢, 雷努卡N.