在我的程序中,我有一个表格,其中包含有关输入的作业和从中获得的金额的详细信息。
我应该能够从当前日期和每年固定日期之间 DATEBANK
的工作中选择金额:财政年度的开始。
c.execute("SELECT AMOUNT FROM vatsum1 WHERE DATEBANK BETWEEN '{x}' AND '{y}'".\
format(y = DateBankCur, x = StrtFYear))
我设法让当前日期很好,特定年份的财政年度开始(例如2016年2月1日)。
但是当我使用晚年或前几年的日期时,这不会有用。
如何选择最新的“01/02”来比较当前日期?
答案 0 :(得分:0)
如果StrtFYear
是表示年份的整数,则可以使用
DATEBANK
年份大于或等于该年份的所有记录
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))