В моей базе данных mysql у меня есть такие даты: 2011-01-06 09: 39: 114525
и мне нужно дополнительно указывать годы, месяцы, дни, часы, минуты, секунды.
Поэтому мне нужно извлечь из примера:
2011 01 06 09 39 11
Как мне это сделать ?
В MySQL просто сделайте MONTH(date)
, YEAR(date)
и т. Д. В PHP вы можете сделать date('g', strtotime($datefromsql))
чтобы получить, например, 12-часовой формат часа с даты ,
Итак, в приведенном выше примере вы можете либо сделать
SELECT YEAR(date), MONTH(date), DAYOFMONTH(date), HOUR(date), MINUTE(date), SECOND(date)
или в PHP,
$time = strtotime($datefromsql); echo date('Y', $time); echo date('m', $time); echo date('d', $time); echo date('h', $time); echo date('i', $time); echo date('s', $time);
Проверьте эту ссылку http://dev.mysql.com/doc/refman/5.5/ru/date-and-time-functions.html
ADDDATE() Add time values (intervals) to a date value ADDTIME() Add time CONVERT_TZ() Convert from one timezone to another CURDATE() Return the current date CURRENT_DATE(), CURRENT_DATE Synonyms for CURDATE() CURRENT_TIME(), CURRENT_TIME Synonyms for CURTIME() CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP Synonyms for NOW() CURTIME() Return the current time DATE_ADD() Add time values (intervals) to a date value DATE_FORMAT() Format date as specified DATE_SUB() Subtract a time value (interval) from a date DATE() Extract the date part of a date or datetime expression DATEDIFF() Subtract two dates DAY() Synonym for DAYOFMONTH() DAYNAME() Return the name of the weekday DAYOFMONTH() Return the day of the month (0-31) DAYOFWEEK() Return the weekday index of the argument DAYOFYEAR() Return the day of the year (1-366) EXTRACT() Extract part of a date FROM_DAYS() Convert a day number to a date FROM_UNIXTIME() Format UNIX timestamp as a date GET_FORMAT() Return a date format string HOUR() Extract the hour LAST_DAY Return the last day of the month for the argument LOCALTIME(), LOCALTIME Synonym for NOW() LOCALTIMESTAMP, LOCALTIMESTAMP() Synonym for NOW() MAKEDATE() Create a date from the year and day of year MAKETIME MAKETIME() MICROSECOND() Return the microseconds from argument MINUTE() Return the minute from the argument MONTH() Return the month from the date passed MONTHNAME() Return the name of the month NOW() Return the current date and time PERIOD_ADD() Add a period to a year-month PERIOD_DIFF() Return the number of months between periods QUARTER() Return the quarter from a date argument SEC_TO_TIME() Converts seconds to 'HH:MM:SS' format SECOND() Return the second (0-59) STR_TO_DATE() Convert a string to a date SUBDATE() A synonym for DATE_SUB() when invoked with three arguments SUBTIME() Subtract times SYSDATE() Return the time at which the function executes TIME_FORMAT() Format as time TIME_TO_SEC() Return the argument converted to seconds TIME() Extract the time portion of the expression passed TIMEDIFF() Subtract time TIMESTAMP() With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments TIMESTAMPADD() Add an interval to a datetime expression TIMESTAMPDIFF() Subtract an interval from a datetime expression TO_DAYS() Return the date argument converted to days TO_SECONDS() Return the date or datetime argument converted to seconds since Year 0 UNIX_TIMESTAMP() Return a UNIX timestamp UTC_DATE() Return the current UTC date UTC_TIME() Return the current UTC time UTC_TIMESTAMP() Return the current UTC date and time WEEK() Return the week number WEEKDAY() Return the weekday index WEEKOFYEAR() Return the calendar week of the date (0-53) YEAR() Return the year YEARWEEK() Return the year and week
Лучший способ использования класса DateTime
$my_sql_date = '2011-01-06 09:39:11'; $date_time = new DateTime($my_sql_date); echo $date_time->format('Y').PHP_EOL; echo $date_time->format('m').PHP_EOL; echo $date_time->format('d').PHP_EOL; echo $date_time->format('h').PHP_EOL; echo $date_time->format('i').PHP_EOL; echo $date_time->format('s');
$dt = Carbon::now(); $dt->timestamp = strtotime($mysqlVarDatetime); //like '2017-01-31 07:19:11' string cad
это может быть результатом:
var_dump($dt->year); // int(2017) var_dump($dt->month); // int(1) var_dump($dt->day); // int(31) var_dump($dt->hour); // int(7) var_dump($dt->minute); // int(19) var_dump($dt->second); // int(11)
Ресурс для получения дополнительной информации Углеродная библиотека : http://carbon.nesbot.com/docs/#api-getters
Старая нить, но я не мог устоять перед публикацией очевидного решения «грубой силы»:
Если формат строки даты и времени SQL всегда указан как в вашем примере, и вы не хотите использовать функции / классы даты и времени, вы можете сделать следующее:
$mysql_datetime = "2011-01-06 09:39:114525"; list($date, $time) = explode(' ', $mysql_datetime); list($year, $month, $day) = explode('-', $date); list($hr, $min, $sec) = explode(':', $time); $sec = (int)substr($sec, 0, 2);
Значения, которые вы хотите, теперь доступны в следующих переменных: $year, $month, $day, $hr, $min, $sec
.