2011-02-03 2 views
4

Мне нужно получить дату с SQL Server datetime, а затем отформатировать дату. (т. е. 01-Jan-2000) Я использую PHP.Получить дату из sql-сервера datetime

В настоящее время SQL возвращается 2009-02-13 22:00:00.000.

+0

Убедитесь, что принимать во внимание, если база данных использует UTC (или другой TZ, я очень рекомендую только UTC в данные) и как данные должны быть представлены. Фактическая дата может отличаться в зависимости от того, как она интерпретируется - обратите внимание, что в дате нет значения TZ offset (и не будет ни одного из datetime в sql :-) –

+1

@ user569403: какую функцию PHP вы используете для синтаксического анализа эта дата? 'strtotime()' будет правильно анализировать эту дату, даже если она отбросит микросекундную часть. Если вы используете 'date()' непосредственно в этой строке, это невозможно, так как 'date()' требует целочисленной метки времени ... Как ни странно, 'date()' имеет формат 'u' для возврата микросекунд, даже если' date() 'неспособна принимать или анализировать' floats'. Идите фигуру. –

ответ

12
echo date('d-M-Y', strtotime($datetime_from_db)); 
+0

@ user569403: где '$ datetime_from_db' - столбец даты, возвращаемый вашим запросом. Примеры того, что строки strtotime() 'могут принимать, см. На странице man: http://php.net/manual/en/function.strtotime.php. Примеры для переформатирования дат с использованием 'date()', как в примере Дэн Гроссман, см. Http://us.php.net/manual/en/function.date.php. –

+0

Это то, что я делал раньше, но некоторые, как он печатает только 1-янв-1970, теперь я использую функцию разрыва и получаю часть даты из этого времени. –

+0

Если вы получаете 1 января-1970 года, это, скорее всего, означает, что значение в $ date_from_db неверно. Вероятно, вы должны распечатать его на экране, чтобы убедиться, что вы ожидаете, если вы получаете 1-янв-1970 –

1

Вы можете объединить дату в любом формате, который вы хотите напрямую из MySql запросов,

SELECT DATE_FORMAT(column_name, '%d-%b-%Y') FROM tablename