#php #mysql #datetime
#php #mysql #datetime
Вопрос:
Я новичок в использовании этой convert
функции. Я пытаюсь сократить значение даты и времени из моей таблицы. В настоящее время мои значения даты и времени выглядят примерно так, 2016-10-14 16:51:41
, но я бы хотел, чтобы это выглядело примерно как мм / дд / гг.
Я не знаю, правильный ли это подход (не должен быть, поскольку он не работает), но я сгенерировал запрос с помощью convert
функции, а затем извлек данные с помощью a mysqli_fetch_array
.
Вот код, который я использую:
$sql = "SELECT id, time, CONVERT(VARCHAR(11), time) as something FROM tableName";
$query = mysqli_query($db, $sql);
$statusnumrows = mysqli_num_rows($query);
// Gather data about parent pm's
if($statusnumrows > 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
$time= $row["time"];
}
}
Time
это имя столбца, который имеет тип datetime.
Заранее спасибо за предложения / советы.
Комментарии:
1. Основываясь на вашем коде, я предполагаю, что вы используете MySQL, поэтому я меняю теги. Добавьте также тег PHP.
Ответ №1:
Вы должны хранить datetime в своей БД в соответствующих типах данных, таких как datetime и т. Д.
Как я вижу, вы используете PHP, если вам нужно ВЫВЕСТИ это значение даты и времени в каком-либо интерфейсе (например, на странице HTML), вы должны использовать функции PHP для преобразования даты в нужный вам формат. Это хорошая практика
БД должна ХРАНИТЬ данные, но форматирование является проблемой интерфейса.
Простой пример strtotime()
и date()
:
$Date = "2016-10-15";
$newDate = date("m/d/Y", strtotime($Date));
Вы можете прочитать документы на сайте PHP: strtotime и date
Комментарии:
1. Спасибо за вашу помощь! Это сработало отлично! Еще раз спасибо!
2. Мое удовольствие! 😉
Ответ №2:
Если 2012 вы могли бы использовать формат (не очень эффективный, но предлагает некоторые другие возможности)
Declare @Date DateTime = GetDate()
Select UsingFormat = Format(@Date,'MM/dd/yy')
,UsingConvert1 = convert(varchar(10),@Date,1)
,UsingConvert101 = convert(varchar(10),@Date,101)
ВОЗВРАТ
UsingFormat UsingConvert1 UsingConvert101
10/15/16 10/15/16 10/15/2016
Комментарии:
1. Есть ли у вас какие-либо идеи, почему
FORMAT
это происходит довольно медленно по сравнению с другими внутренними функциями2. @Prdp увидел статью и сам провел несколько тестов. Я был в шоке. Я подозреваю, что они пытались упаковать слишком много в функцию. mssqltips.com/sqlservertip/3018 /…
Ответ №3:
Используйте стиль 1
в Convert
функции для mm/dd/yy
форматирования
select CONVERT(VARCHAR(20), [time],1)
From yourtable
Если вам нужен mm/dd/yyyy
формат, то используйте 101
стиль
select CONVERT(VARCHAR(20), [time],101)
From yourtable
Ссылка MSDN для функции преобразования с различным стилем: ПРЕОБРАЗОВАТЬ
Комментарии:
1. Спасибо за ваш ответ! Извините, если это глупый вопрос, но нужно ли мне все еще использовать mysqli_fetch_array? Я пытаюсь отобразить значение времени, но на данный момент мне не повезло.
2. @Millica — Я не имею ни малейшего представления о
mysqli_fetch_array
том, что я специалист по базам данных.3. @Millica да, вам нужно использовать
mysqli_fetch_array
, чтобы извлекать данные из вашей базы данных и каким-то образом выводить их. Но как правильно его использовать — это другой вопрос. Я предлагаю вам поискать PHP.net документы для получения дополнительной информации и примеров. Вам нужно использовать$time= $row["something"];
, потому что вы вызываете этот столбецsomething
в своем запросе. Что приводит васecho $time
после выборки?