Python表达式查找数据库字段中两个日期之间的所有日期

Python表达式查找数据库字段中两个日期之间的所有日期,python,datetime,expression,Python,Datetime,Expression,我构建了一个python脚本,首先打印上周的所有日期,然后创建两个变量,即第一个日期和最后一个日期,这样我就可以编写一个表达式来查找字段中介于这些日期之间的所有日期。以下是我到目前为止的情况: import arcpy, sys, string, os, time, shutil, tempfile, logging, datetime # this is the current date now = datetime.datetime.now() # subtract 7 days from

我构建了一个python脚本,首先打印上周的所有日期,然后创建两个变量,即第一个日期和最后一个日期,这样我就可以编写一个表达式来查找字段中介于这些日期之间的所有日期。以下是我到目前为止的情况:

import arcpy, sys, string, os, time, shutil, tempfile, logging, datetime
# this is the current date
now = datetime.datetime.now()

# subtract 7 days from the current date
SevenDaysBack = now - datetime.timedelta(days=7)

# this is the date of the first day of last week
now_day_1 = SevenDaysBack - datetime.timedelta(days=now.weekday())

dates = {}
#this lists out all the dates of last week
for n_week in range(1):
    dates[n_week] = [(now_day_1 + datetime.timedelta(days=d+n_week*7)).strftime("%Y%m%d") for d in range(7)]
##for d in range(7):
    ##dates = [(now_day_1 + datetime.timedelta(days=d*7)).strftime("%Y%m%d")]
print dates

From_Date = dates[n_week][0]
To_Date = dates[n_week][6]
print From_Date
print To_Date

SaleDateExpression = [DATE_SOLD] "between" + From_Date + "and" + To_Date
print SaleDateExpression

该脚本一直工作到我尝试创建将在以后的函数中使用的表达式为止。我确信这是一个语法问题,但我不知道如何使它工作。

您的代码在倒数第二行有一个奇怪的地方:
SaleDateExpression=[DATE\u sell]“介于”+自日期+“和”+至日期之间

您提到的语法错误是因为这里的
[DATE\u sell]
无效;此外,这似乎没有任何意义,因为您没有向我们提供有关销售日期的任何信息

因此,最后一行可以是
SaleDateExpression=[DATE\u sell]”介于“+From\u DATE+”和“+To\u DATE”之间
哪个会输出

2016年10月31日至2016年10月16日之间


但是,假设您希望输出更具可读性,那么有几件事需要评论

首先,您将日期创建为
%Y%m%d
,它将年、月和日连接在一起,没有空格,创建您看到的
20161031
20161106
;要解决此问题,您可以将
%Y%m%d
输入到
strftime

其次,单词和日期之间没有空格。为了解决这个问题,您可以在
之后的
之间,以及
之前和之后添加一个空格,如下
“介于”+开始日期+“和”+结束日期
之间

最后,按照所有这些说明,您的代码现在将输出

2016年10月31日至2016年11月06日


编辑:

根据您的评论,似乎唯一的问题是
[DATE\u sell]
不在报价范围内。要实现您在评论中所提出的在20160601和20160630之间的
[DATE\u sell]中所寻找的结果,您需要在
strftime
中使用
%Y%m%d
,并在
之间以及
之前和之后添加空格,如上所示。这将提供所需的输出

[出售日期]在20160601和20160630之间


“我确信这是一个语法问题…”,当您尝试运行它时,它是否会输出任何错误?如果是这样的话,请将它抛出的错误全部发布。除非我注释掉表达式,否则我无法通过语法错误让它运行。脚本的其余部分工作正常。语法错误突出显示了单词“between”。感谢Wintro的帮助。表达式最初来自于我构建的模型,该模型与我的脚本所做的相同。当我将模型导出到脚本时,SaleDateExpression代码如下所示:SaleDateExpression=arcpy.GetParameterAsText(0)如果SaleDateExpression=='#'或不SaleDateExpression:SaleDateExpression=“[DATE_sell]介于20160601和20160630之间”,则在脚本的未包含部分中进一步调用该表达式。这一个有效,但我不想在每次运行脚本之前编辑它,所以我用代码替换了它above@ChristyWest我编辑了我的问题,问题解决了吗?