Regex para verificar o formato de data e hora do MySQL válido

Recentemente, descobri que precisava validar uma entrada de data / hora e decidi usar regex para realizar a tarefa. Uma vez que o valor deve ser inserido em uma coluna MySQL do tipo datetime, o regex abaixo funciona perfeitamente:

^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$

A expressão regular também aceitará uma data pura (2012-09-28) ou uma data + hora (2012-09-28 21:00:00).