我有一張桌子叫rainfall. 它有 2 列(sensorID,area, time,rainfall,redalert)我想以 5 分鐘的間隔用隨機(jī)時(shí)間填充時(shí)間列(例如 12:55、04:30、07:45)。我設(shè)法通過(guò)使用此 Python 代碼獲得了隨機(jī)時(shí)間:import mysql.connectorimport randomimport datetimeimport timeMINTIME = datetime.datetime(2020,4,1,0,0,0)MAXTIME = datetime.datetime(2020,7,1,0,0,0)mintime_str = int(time.mktime(MINTIME.timetuple())) #convert date to INTmaxtime_str = int(time.mktime(MAXTIME.timetuple())) #convert date to INTno_steps = (maxtime_str - mintime_str)//(5*6) #state the number of minutes interval to 5 minutessql = "UPDATE rainfall SET date = %s"rand = ''for RECORD in range(108): random_slot = random.randint(0, no_steps) random_ts = mintime_str + 5*60 * random_slot RANDOMTIME = datetime.datetime.fromtimestamp(random_ts) rand = datetime.datetime.strftime(RANDOMTIME, '%H:%M')val = (rand,)mycursor.execute(sql, val)raindb.commit()print(mycursor.rowcount, "record(s) affected")問(wèn)題是這段代碼只用 1 個(gè)值及時(shí)填充所有行:我需要在每一行中使用不同的值。如果某些行具有重復(fù)的時(shí)間值,那很好。
2 回答

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
你只能用 SQL 來(lái)做:
update rainfall
set time = concat(
lpad(floor(rand() * 24), 2, '0'),
':',
lpad(floor(rand() * 12) * 5, 2, '0')
);

MYYA
TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
我會(huì)使用rand()
如下:
update rainfall set time = sec_to_time(floor(rand() * 60 * 60 * 24 / (5 * 60) * 5 * 60)
表達(dá)式rand() * 60 * 60 * 24
為您提供代表時(shí)間的隨機(jī)秒數(shù)。然后您可以使用floor()
和乘法將其四舍五入到最接近的 5 分鐘。最后,time_to_sec()
把它變成一個(gè)time
.
添加回答
舉報(bào)
0/150
提交
取消