предположим, у вас есть эта строка в переменной с именем $date
$date = '2017-01-20';
Вы можете explode его в list, если вы уверены, что формат соответствует:
list($year, $month, $day) = explode("-", $date, 3);
Вы можете преобразовать дату к времени целого числа, используя strtotime для использования в других функций, таких как date. Это имеет дополнительное преимущество, заключающееся в состоянии проверить, что это хорошо сформированную дата:
$time = strtotime($date);
if ($time === false) die("Bad date format: $date.");
$year = date('Y', $time);
$month = date('m', $time); // 'n' if you don't want leading zero
$day = date('d', $time); // 'j' if you don't want leading zero
Как jasonmoqio баллов из, так как вы просили быстро, substr это чуть-чуть быстрее, чем взрыва. (На моей рабочей станции looping substr vs. explode 10 миллионов раз только улучшал 1/1000-й секунды в результате взрыва, поэтому, если это не в цикле, который запускается миллионы раз, вы не заметите разницы и должны выбрать . читабельность кода)
$year = substr($date, 0, 4);
$month = substr($date, 5, 2);
$day = substr($date, 8, 2);
Подсказки: 'месяц ('2017-01-20'), год ('2017-01-20'), день ('2017-01-20')' в mysql. – Blank