如何从每年的当前日期和固定日期之间的表中选择值?

2024-10-03 02:41:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的程序中,我有一个表,其中包含输入的工作以及从中获得的金额的详细信息

我应该能够从DATEBANK位于当前日期和每年固定日期(财政年度开始)之间的工作中选择金额

c.execute("SELECT AMOUNT FROM vatsum1 WHERE DATEBANK BETWEEN '{x}' AND '{y}'".\
                    format(y = DateBankCur, x = StrtFYear))    

我已设法获得当前日期罚款和特定年度的财政年度开始日期(例如2016年2月1日)

但当我使用晚年或前几年的日期时,这就行不通了

如何选择最新的“01/02”来比较当前日期


Tags: andfrom程序formatexecute详细信息betweenwhere
1条回答
网友
1楼 · 发布于 2024-10-03 02:41:15

如果StrtFYear是表示年份的整数,则可以使用

strftime('%Y', DATEBANK) >= ?

例如

import datetime as DT
StrtFYear = 2015
DateBankCur = DT.date.today()
c.execute(
    "SELECT AMOUNT FROM vatsum1 WHERE strftime('%Y', DATEBANK) >= ? AND DATEBANK <= ?", 
    (StrtFYear, DateBankCur)) 

请注意,提供参数(StrtFYear, DateBankCur)作为c.execute的第二个参数比自己尝试使用字符串格式引用参数更容易、更安全。它更安全,因为它不易受SQL injection的攻击


如果StrtFYear是Python datetime.date,那么可以使用StrtFYear.year获得整数年。那样的话你可以用

c.execute(
    "SELECT AMOUNT FROM vatsum1 WHERE strftime('%Y', DATEBANK) >= ? AND DATEBANK <= ?", 
    (StrtFYear.year, DateBankCur)) 

相关问题 更多 >