Что ж, если вы вместо этого используете date('his')
и приводите его как строку (чтобы PHP не интерпретировал его как целое число и не удалял возможный начальный ноль), вы можете добавить двоеточия, разделив строку каждые два числа, а затем взорвавс двоеточиями.
$d = (string)date( 'his' );
echo (int)$d; //Format without colons
echo implode( ':', array_map('intval', str_split( $d, 2 ) ) );
Для второй части сделайте то же самое, за исключением разделения строки на 4 символа, а затем разделите второе разделение на 2.
$d = date('Ymd');
echo $d; //Format without dashes
list($year, $second) = str_split( $d, 4 );
$parts = str_split( $second );
array_unshift( $parts, $year );
echo implode( '-', $parts );
Inоднако в обеих ситуациях было бы проще начать с форматированных строк (с двоеточиями и тире) и удалить их для БД.
$d = date('G:i:s');
echo $d; //With colons
echo str_replace( ':', '', $d );
$d = date('Y-m-d');
echo $d; //With dashes
echo str_replace( '-', '', $d );