在Python中创建日期间隔

Dav*_*ron 2 python mysql

我想使用for循环打印两个日期之间的每个日期.实际上要将它与MySQL查询合并,将日期传递给查询本身并输入到输出的文件名中.

那么,我该如何改变呢:

sum = 0
for i in range(1,11):
 print sum
 sum += i
Run Code Online (Sandbox Code Playgroud)

对此?

InputDate = '2009-01-01'
for i in range('2009-01-01','2009-07-01'):
 print InputDate 
 InputDate += i
Run Code Online (Sandbox Code Playgroud)

我意识到rrule中有一些功能可以完成这个功能:

a = date(2009, 1, 1)
b = date(2009, 7, 1)
for dt in rrule(DAILY, dtstart=a, until=b):
 print dt.strftime("%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)

但是,我只限于旧版本的python.

这是我尝试做的shell脚本版本,如果这有助于澄清:

while [InputDate <= EndDate]
do
    sql="SELECT Date,SUM(CostUsd) FROM DailyStats WHERE Date = '$InputDate' GROUP BY Date"
    name=$(mysql -h -sN -u -p -e "$sql" > DateLoop-$InputDate.txt db)
    echo "$name"
    InputDate=$(( InputDate + 1 ))
done
Run Code Online (Sandbox Code Playgroud)

那我怎么能在Python中做到这一点?

在此处添加后续问题以提高可读性.不幸的是,我不能使用标准的MySQL库,因为我们有一个专有的设置,有许多实例并行运行.运行此类查询的唯一方法是在命令行上一次连接一个实例.

而day <= b:print"运行提取物:"

sql ="SELECT Date,SUM(CostUsd)FROM Stats d WHERE d.Date ="+ day +"GROUP BY Date"

os.system('mysql -h -sN -u -p -e"+ sql +"> DateLoop-"+ day +".txt db')

日+ =一天

bal*_*pha 7

这将有效:

import datetime

a = datetime.date(2009, 1, 1)
b = datetime.date(2009, 7, 1)
one_day = datetime.timedelta(1)

day = a

while day <= b:
    # do important stuff
    day += one_day
Run Code Online (Sandbox Code Playgroud)