如何在python

时间:2018-03-30 14:45:10

标签: sql python-3.x pandas

我在python中使用pandas编写一个sql查询。在where子句中,我需要将日期列(比如评论日期2016-10-21)与此值'2016Q4'进行比较。换句话说,如果审核日期在2016年第四季度或之后,那么它们将被选中。现在,我如何将审核日期转换为与“yyyyQ4”格式相当的内容。有没有python功能呢?如果没有,我是怎么为此目的写一个?

2 个答案:

答案 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

会返回:

  • 持续数月1 - 3:1
  • 月份4 - 6:2
  • 数月7 - 9:3
  • 数月10 - 12:4