SELECT substr(strftime('%Y', date),3,2) AS month, 0 AS zero FROM listvalue
我在SQLite中有此查询,当我将其导入Postgres时,在翻译substr(strftime('%Y', date),3,2)
部分时遇到问题。
答案 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.