I want to update an attribute if the date from another attribute is tomorrows date. My script runs without error but nothing gets updated. I think the If statement needs to be adjusted. Any help?
with arcpy.da.UpdateCursor(layer,['StartDate','Status']) as cursor:
for row in cursor:
today = datetime.datetime.today()
tomorrow = today + datetime.timedelta(1)
tmw = datetime.datetime.strftime(tomorrow, '%Y-%m-%d 00:00:00')
tmw2 = datetime.datetime.strftime(tomorrow, '%Y-%m-%d 23:59:59')
com = "BETWEEN timestamp '" + tmw + "' AND timestamp '" + tmw2 +"'"
if (str(row[0]) == com):
print ("Match Found!")
row[1] = 'Active'
cursor.updateRow(row)
print ('Complete')
Solved! Go to Solution.
What you script is doing is comparing the value with the where clause. To the computer it looks something like this.
If ('2/23/2019' == "BETWEEN timestamp '2/23/2019 00:00:00' AND timestamp '2/23/2019 23:59:59')
do this
This doesn't make much sense. You need to rewrite your if state to use > and < signs. You also need to use the date object or convert it to an integer to work since string won't compare correctly.
If ('2/23/2019' < '2/23/2019 00:00:00' AND '2/23/2019' > '2/23/2019 23:59:59')
do this
What you script is doing is comparing the value with the where clause. To the computer it looks something like this.
If ('2/23/2019' == "BETWEEN timestamp '2/23/2019 00:00:00' AND timestamp '2/23/2019 23:59:59')
do this
This doesn't make much sense. You need to rewrite your if state to use > and < signs. You also need to use the date object or convert it to an integer to work since string won't compare correctly.
If ('2/23/2019' < '2/23/2019 00:00:00' AND '2/23/2019' > '2/23/2019 23:59:59')
do this
Your com expression is being constructed as SQL, but you aren't applying it as SQL. Try
today = datetime.datetime.today()
tomorrow = today + datetime.timedelta(1)
tmw = datetime.datetime.strftime(tomorrow, '%Y-%m-%d 00:00:00')
tmw2 = datetime.datetime.strftime(tomorrow, '%Y-%m-%d 23:59:59')
com = "BETWEEN timestamp '" + tmw + "' AND timestamp '" + tmw2 +"'"
with arcpy.da.UpdateCursor(layer,['StartDate','Status'], 'StartDate ' + com) as cursor:
for row in cursor:
row[1] = 'Active'
cursor.updateRow(row)
print ('Complete')