Forum Webscript.Ru
Программирование => PHP => Тема начата: MrGreeN от 29 Августа 2003, 16:08:41
-
Формирую строку (mssql):
$strquer= \'select * from Access_log where (Date_time between \\\'\'.$year.$month.\'01 00:00\\\' and \\\'\'.$year.$month.$day.\' 00:00\\\')\';
ответ:
Warning: MS SQL message: Syntax error converting datetime from character string.
делаю ехо $strquer
ответ:
select * from Access_log where Date_time between (\'2003801 00:00\' and \'2003829 00:00\')
Проверяю его в самой скуль консоли ....работает
как и что за ...?
-
сделай print $strquer и сравни с тем, что набираешь в консоли.
-
a чем в результате будут отличатся
echo $strquer
и
print ($strquer) ?
как я в первом посте написал , результат вывода в браузер полностью совпадает с тем, что я вбиваю в консоль....
-
Клясться не буду, так как в MS SQL не работал, но в Oracle с датами корректно можно работать только так:
$date_from=date(\'d.m.Y\');
$query="select * from table where DT BETWEEN (TO_DATE(\'$date_from 00:01\',\'DD.MM.YYYY ,HH24:MI\')) and (TO_DATE(\'$date_to 23:59\',\'DD.MM.YYYY ,HH24:MI\')) order by DT desc");
TO_DATE - встроенная ораклова функция
DD.MM.YYYY ,HH24:MI - шаблон
-
Не выделывайся, а напиши дату в запросе в виде YYYY-MM-DD 00:00:00
У меня с MsSQL это работает. Он сам конвертит в формат DD.MM.YYYY 00:00:00 на серверах с локалью RU и в формат MM/DD/YYYY 00:00:00 на серверах с локалью NL. А так как ты пишешь, вообще не прокатывает даже с консоли.
Я храню дату в поле типа datetime
-
если прямо на твой вопрос не ответят, то могу посоветовать поизучать коды нормальных библиотек для работы с СУБД (adodb или pear:: DB).
Мельком глянул, в adodb какие-то функции для работы с датой понаписывали.
ЗЫ
[off] а я вообще дату в последнее время дату стал хранить в int-полях как результат функции time() - мне это кажется удобно и кросс-СУБД-шным[/off]
-
Мужики... с меня пиво....по-любому...:D
Локаль оказалась не та...и в итоге работает такое.....но работает!!!
$strquer= \'select * from Access_log where Date_time between \\\'07/01/2003 00:00\\\' and \\\'08/29/2003 00:00\\\' \'; // получается США
Yukko
даты у меня тоже datetime....
Не поверишь, с консоли как раз (\'2003801 00:00\' and \'2003829 00:00\') прокатывает, в том-то и прикол почему сразу на локаль не подумал
может мс скуль такой умный что тихо сам конвертит...
Макс
да надо поковырять их, времячко никак выделить не могу... :(
-
Упс...., а я что , могу сам себе рейтинг делать?