Perdonen que me meta ahora, pero la solución que encontraron me parece bastante desprolija.
Según lo que dijiste en el primer mensaje: a la función date le estás pasando la variable fecha con el formato YYYY-MM-DD. Eso es un error, el timestamp debe ser en formato epoch (Tiempo Unix o POSIX), o sea: el tiempo en segundos desde el 1 de enero de 1970.
Lo de usar explode sirve, pero estamos hablando de fechas, no de cadenas.
Para convertir a epoch podés usar la función
strtotime.
Aunque en realidad sería mucho mejor usar la clase
DateTime.
Código PHP:
Ver original<?php
$fecha = new DateTime('2010-11-22');
$day = $fecha->format('d');
$month = $fecha->format('m');
$year = $fecha->format('Y');
?>