You can execute a SQL script (select * from sysprocesses) using ISQL and have it append to a database table. Or, if you're running 188.8.131.52 or higher, you can use a select statement to copy from monProcesses to your database table.
The only disadvantage to the above approaches is (i) you'll have to write some SQL code to analyze the data to identify peak times and then output the connections open at that time, (ii) unless you purge the table from time to time, it can grow very large, (iii) it won't help you identify connections that are short in duration because it will be running at specific intervals (every minute or every X seconds). You'll miss all connections that started/ended between intervals. Lastly, (iv) depending on how busy your database server is, this could translate into additional Engine and Disk utilization as it gathers and appends this information to your database table. One other thing you might add is the ability to have it get the SQL text and save that in your database table. This would require a bit more work and possibly incur additional Engine/Disk utilization.
If you don't mind investing in a 3rd party solution, we do have a product that will do just what you are looking for which is zero-impact on your database server, provides canned reports/analysis and captures all SQL text, including those that execute quickly. Our solution is based on network sniffing, so it can be run from a different machine on the same subnet.
Hope that helps.