Sql 如何在python中比较日期(yyyy-mm-dd)和年-季度(yyyyQQ)
我正在用python编写一个sql查询。在where子句中,我需要将日期列(比如2016年10月21日的审核日期)与该值“2016Q4”进行比较。换句话说,如果审查日期在2016年第四季度或之后,则将选择这些日期。现在,我如何将审核日期转换为与“yyyq4”格式类似的格式。有任何python函数可以实现这一点吗?如果没有,我该如何写一个呢?我建议将您的审核日期转换为季度格式。然后检查它们是否相等 范例Sql 如何在python中比较日期(yyyy-mm-dd)和年-季度(yyyyQQ),sql,python-3.x,pandas,Sql,Python 3.x,Pandas,我正在用python编写一个sql查询。在where子句中,我需要将日期列(比如2016年10月21日的审核日期)与该值“2016Q4”进行比较。换句话说,如果审查日期在2016年第四季度或之后,则将选择这些日期。现在,我如何将审核日期转换为与“yyyq4”格式类似的格式。有任何python函数可以实现这一点吗?如果没有,我该如何写一个呢?我建议将您的审核日期转换为季度格式。然后检查它们是否相等 范例 SELECT (CONVERT(VARCHAR(4),DATEPART(YYYY, GETDA
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)
SELECT(CONVERT(VARCHAR(4),DATEPART(YYYY,GETDATE())+'Q'+
案例
当转换(VARCHAR(2),DATEPART(M,GETDATE())时,您可以将月份转换为一个变量:mon
您可以使用以下代码获取季度信息:
范围(1,13)内的mon的:
打印(mon-1)//3+1,
打印
这将返回:
- 第1-3个月:1
- 第4-6个月:2
- 第7-9个月:3
- 第10-12个月:4
理想情况下,这个解决方案可能会起作用,我也是这么想的,但在pd.read\u sql()中使用DATEPART时,它不起作用并显示此错误:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。我可以看到这在某个范围内是如何工作的。但是,如果我有名为“month”(值范围为1到12)的列/数据框,我应该如何使用for循环?
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'