(This data is current via block 535276.)
Based on Block timestamp (which need not be exact) the longest difference between successive blocks is 463,160 seconds (5 days, 8 hours, 39 minutes, 20 seconds) between blocks 0 and 1. The second longest is 90532 seconds (1 day 1 hour 8) minutes 52 Seconds) between blocks 15323 and 15324.
For "shortest", since timestamps are not strictly enforced and can be accidentally or deliberately falsified, a block can have an earlier timestamp than its predecessor, by up to 2 hours (7200 seconds). In this case the time difference is negative. This has happened 13828 times. The most negative difference is -7125 seconds (1 hour 58 minutes 45 seconds) between blocks 156113 and 156114.
There were 222 blocks with the same timestamp as their predecessor, making a difference of 0.
The script that I used to collect this data is located at https://github.com/neldredge/bitcoin-blocks.
The actual block intervals are difficult to determine precisely because we are not sure when the individual blocks were actually dismantled. Some sites like blockchain.info record the first time their node received the block, but there is an unknown propagation delay between when a block is actually dismantled and when another node receives it (though for a well-connected knot) it's probably not much longer than 1 second) It is also possible to receive blocks out of order, so the difference in reception times can also be negative. In addition, such data is obviously not available for early blocks prior to the existence of the site in question.
In principle, it might be possible to search for the longest and shortest difference between the reception times, but I don't know how to get this data in bulk.