MSSQL дата до php

1

Я широко использую googled, видел различные решения stackoverflow, но никто не работает здесь. Не знаю, почему. Помогите было бы здорово!

Дата хранится в поле smalldatetime в MSSQL. Значение этого можно рассматривать как "2015-11-27 00:00:00". Это похоже на формат даты в mySQL. Пример ниже работает, если значение вставлено, но не значение из набора записей.

    //gives correct result, 11/27/2015
    $TravDate = date("m/d/Y", strtotime("2015-11-27 00:00:00"));

    //gives wrong result, 12/31/1969
    $TravDate = date("m/d/Y", strtotime($obj->TravDate));
  • 1
    print_r на $ obj-> TravDate?
  • 1
    и попробуйте повторить его тип и отправьте здесь свой ответ, чтобы мы могли увидеть
Показать ещё 4 комментария
Теги:
sql-server
datetime
date

3 ответа

2
Лучший ответ

Пожалуйста попробуйте

  $datetime = new DateTime( $obj->travdate); //create datetime object with received data
    $reform = $datetime->format('Y M d');   //do reformat as required

См. Http://af-design.com/blog/2010/03/13/microsoft-sql-server-driver-for-php-returns-datetime-object/

  • 0
    Это msql. Использую sqlsrv для MSSQL.
  • 1
    Спасибо, что сработало! Ничего не ожидал по той причине, что вы указали, но, к моему удивлению, это дало "реформы = 2015 авг 28", что правильно.
Показать ещё 4 комментария
0

Решение найдено. Я отказался от использования метода PHP выше: он работал для всех других переменных в наборе записей, кроме поля даты TravDate, которое не равно null.

Решение включало изменение SQL-запроса путем преобразования поля даты следующим образом: - CONVERT (varchar (10), TravDate, 20) AS TravDate (php echo, дающий 11/27/2015). Это решение найдено в qaru.site/questions/29520/....

0

Убедитесь, что $obj-> TravDate сериализован в строку правильно, вероятно, решение неверно. Попробуйте сначала выполнить строчку и после использования функции strtotime().

  • 1
    Извините, новичок здесь. Значения полей были взяты из базы данных, а не сериализованы из формы. Попробовал следующий код, выдал ошибку: - 'code' $ TravDate = $ obj-> TravDate; $ TravDate = (строка) $ TravDate; $ TravDate = date ("m / d / Y", strtotime ($ TravDate));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню