So essentially you will perform 2880 polls per day to look for a "time"
Since Node-RED is event based, a better solution is, when reading the database, generate a cron-plus schedule that will execute exactly at the right time.
Demo
look maa, no poling what-so-ever
[{"id":"60d8d1917dfe26e4","type":"cronplus","z":"c2233fc1d8cc5c3b","name":"","outputField":"payload","timeZone":"","persistDynamic":false,"commandResponseMsgOutput":"output1","defaultLocation":"","defaultLocationType":"default","outputs":1,"options":[],"x":1340,"y":700,"wires":[["2c6cb603de9c263c"]]},{"id":"9c72718894e9fbc4","type":"inject","z":"c2233fc1d8cc5c3b","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1235,"y":580,"wires":[["e854ed1d3954a62d"]],"l":false},{"id":"e854ed1d3954a62d","type":"function","z":"c2233fc1d8cc5c3b","name":"fake database call (12:25)","func":"msg.payload = [\n { executionTime: '12:25' }\n]\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1390,"y":580,"wires":[["4e65d37261007173"]]},{"id":"fcdcccf1f8dbcffd","type":"inject","z":"c2233fc1d8cc5c3b","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1235,"y":620,"wires":[["12948bb6ae62e0e7"]],"l":false},{"id":"12948bb6ae62e0e7","type":"function","z":"c2233fc1d8cc5c3b","name":"fake database call (17:12)","func":"msg.payload = [\n { executionTime: '17:12' }\n]\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1390,"y":620,"wires":[["4e65d37261007173"]]},{"id":"4e65d37261007173","type":"function","z":"c2233fc1d8cc5c3b","name":"generate schedule","func":"\nconst time = msg.payload[0]?.executionTime\n\nif (time) {\n const timeParts = time.split(':')\n if (timeParts.length < 2) {\n node.warn('invalid time value');\n return\n }\n const hour = timeParts[0]\n const minute = timeParts[1]\n const seconds = (timeParts.length > 2) ? timeParts[2] : 0\n\n msg.payload = [\n {\"command\": \"remove-all\" },\n {\n \"command\": \"add\",\n \"name\": `at ${time}`,\n \"expression\": `${seconds} ${minute} ${hour} * * * *`,\n \"expressionType\": \"cron\",\n \"payloadType\": \"default\",\n \"limit\": 3 \n }\n ]\n return msg;\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1650,"y":600,"wires":[["60d8d1917dfe26e4"]]},{"id":"2c6cb603de9c263c","type":"debug","z":"c2233fc1d8cc5c3b","name":"--> do cool stuff at specified time","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1590,"y":700,"wires":[]}]