Я собираюсь кругами с этим! Я делаю следующее:
У меня проблемы с этим.
Если я использую эхо:
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 приводит к значению вне диапазона»
Это может помочь пролить свет на то, что вы ищете.
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