Проблема с использованием даты и времени MSSQL в PHP (через SQLSRV)

Я собираюсь кругами с этим! Я делаю следующее:

  1. Получение даты из поля datetime MSSQL через SQL / PHP
  2. Отправка даты на новую страницу PHP через строку запроса
  3. Попытка использовать эту дату в новом SQL-запросе

У меня проблемы с этим.

Если я использую эхо:

echo $_REQUEST['rSessionDate']; output: 15/10/2012 

Это нормально, но когда я использую его в SQL-запросе, я не получаю ожидаемых результатов, поэтому я подумал, что лучше всего будет убедиться, что он сначала распознается как дата.

Если я использую date_format ():

 echo date_format($_REQUEST['rSessionDate'],'Ym-d'); output: Warning: date_format() expects parameter 1 to be DateTime, string given in ... 

Если я использую strtotime ():

 echo strtotime($_REQUEST['rSessionDate']); output: (nothing) 

Если я использую date ():

 echo date('Ymd H:i',$_REQUEST['rSessionDate']); output: Notice: A non well formed numeric value encountered in ... 

Если я использую date () с strtotime ():

 echo date('Ymd H:i',strtotime($_REQUEST['rSessionDate'])); output: 1970-01-01 01:00 

Я уверен, что я просто пропустил что-то простое.

EDIT: Я пробовал несколько новых функций, которые я нашел:

 $rSessionDate = new DateTime($_REQUEST['rSessionDate']); echo $rSessionDate->format('Ymd H:i:s'); output: Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (15/10/2012) at position 0 (1): Unexpected character' 

а также:

 $rSessionDate = date_create($_REQUEST['rSessionDate']); echo date_format($rSessionDate, 'Ymd H:i:s'); output: Warning: date_format() expects parameter 1 to be DateTime, boolean given i 

EDIT 2:

Я пробовал использовать CAST:

 SELECT fCourseCode ,fCourseTitle FROM tCourses WHERE fCourseCode = '4B' AND (ISNULL(fValidStart, 0) <= CAST('2012-10-15 00:00:00' as DATETIME)) 

Но это происходит с ошибкой «Преобразование типа данных varchar в тип данных datetime приводит к значению вне диапазона»

Solutions Collecting From Web of "Проблема с использованием даты и времени MSSQL в PHP (через SQLSRV)"

Это может помочь пролить свет на то, что вы ищете.

http://www.ozzu.com/programming-forum/php-mssql-datetime-field-not-pulling-correctly-t106226.html

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

strtotime () возвращает временную метку эпохи в приведенном выше примере.

или проверить CAST и CONVERT (относится к MSSQL2000, но может по-прежнему вам помочь)
http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx

если дата была получена из таблицы MSSQL, и вы хотите использовать strtotime() в PHP, а также не хотите менять формат даты на yyyy-mm-dd, тогда вы можете использовать

 CONVERT(VARCHAR(30), DateFromMSSQL, 121) as DateFromMSSQL