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

时间:2016-03-30 11:37:51

标签: python python-3.x sqlite

在我的程序中,我有一个表格,其中包含有关输入的作业和从中获得的金额的详细信息。

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

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

我设法让当前日期很好,特定年份的财政年度开始(例如2016年2月1日)。

但是当我使用晚年或前几年的日期时,这不会有用。

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

1 个答案:

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