我在python中使用pandas编写一个sql查询。在where子句中,我需要将日期列(比如评论日期2016-10-21)与此值'2016Q4'进行比较。换句话说,如果审核日期在2016年第四季度或之后,那么它们将被选中。现在,我如何将审核日期转换为与“yyyyQ4”格式相当的内容。有没有python功能呢?如果没有,我是怎么为此目的写一个?
答案 0 :(得分:1)
我建议您将审核日期转换为季度格式。然后检查它们是否相等。
示例
SELECT (CONVERT(VARCHAR(4),DATEPART(YYYY, GETDATE())) + 'Q' +
CASE
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 3 THEN '1'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 6 THEN '2'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 9 THEN '3'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 12 THEN '4'
END)
您可以在这样的地方使用它,只需将GETDATE()替换为您的审核日期列,将'2018Q1'替换为您的季度列
WHERE (CONVERT(VARCHAR(4),DATEPART(YYYY, GETDATE())) + CASE
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 3 THEN 'Q1'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 6 THEN 'Q2'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 9 THEN 'Q3'
WHEN CONVERT(VARCHAR(2),DATEPART(M,GETDATE())) <= 12 THEN 'Q4'
END) = '2018Q1'
答案 1 :(得分:1)
一旦你能够将月份变为变量:mon
您可以使用以下代码获取季度信息:
for mon in range(1, 13):
print (mon-1)//3 + 1,
print
会返回: