Having to poll the database continually is needlessly inefficient. You're much better off querying the database for the start time of the earliest job, and then setting a timer to wake up when it's time to run that job. For example:
select top(1) * from myTable where time <= current_time // however you get the current time
order by time
Then, subtract the current time from the job start time. You can then set a timer to wait that amount of time. When the timer fires, start the job and query the database for the next job.
Obviously if the start time is before the current time, you'll want to start the job immediately and then check the database for the next job.
But then there's the problem of how to handle new jobs that come in while you're waiting for the first job to start. Or if there are no jobs in the database and a new job comes in. In either case, the best solution is to somehow be notified that a new job has come in so that you can query the database. Then, if the new job's start time is before the current job you're waiting on, you destroy the existing timer, set a new timer to wait for the new, earlier, job, and go back to waiting.
This setup completely eliminates periodic polling of the database. You depend instead on notification when a new job arrives. Without more information about your program's structure I can't say specifically how you'd code it, or even if it's possible in your situation. But if you have control over the design of the system, I would strongly recommend that you do it this way.