[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с датами
zvezda_t
Всем привет!

Скажите пожалуйста как мне сравнить две даты:
1) '31/01/2011' -вводится пользователем
2) поле в БД "datetime", причем сравнение нужно провести без времени.

$sort_date2="31/01/2011";
$result=mssql_query("SELECT *
FROM users
WHERE
CONVERT(char(8),'"
.$sort_date2."',2)<CONVERT(char(8),date_user,2)");

не работает(



Спустя 24 минуты, 19 секунд (14.03.2011 - 15:20) Trianon написал(а):
с учетом того, что сравнивать нужно без учета времени, от самого формата datetime придется уйти в сторону строк.
Строки сравнить на больше-меньше удастся лишь при порядке полей yyyymmdd

получается, что сперва нужно развернуть входной параметр
list($d, $m, $y) = explode('/', $sort_date2);   //  (31, 01, 2011)
$iso_date = sprintf("%04d%02d%02d", $y, $m, $d); // '20110131'


и потом уже переделать поле в строку с порядком ISO и сравнить.
Как-то так:
$result=mssql_query("SELECT     *
FROM users
WHERE '
$iso_date' < CONVERT(char(8),date_user,112)"); // 112 - yyyymmdd style

Спустя 16 часов, 44 минуты, 19 секунд (15.03.2011 - 08:04) zvezda_t написал(а):
Есть вариант, как получить дату без времени :) :

select dateadd(d,datediff(d,0, date_user),0) as date2 from users where id=1

Спустя 7 часов, 37 минут, 31 секунда (15.03.2011 - 15:41) Renden написал(а):
zvezda_t
Можно еще проще

SELECT DATE_FORMAT(mydate,'%e/%m/%Y') AS date FROM bla_bla

на выходе сравниваем, хотя можно и в самом запросе сравнить)

Спустя 16 минут, 36 секунд (15.03.2011 - 15:58) Trianon написал(а):
Renden
в MSSQL есть такая функция?
Ссылочку на мануал можно попросить?

Спустя 20 часов, 38 минут, 45 секунд (16.03.2011 - 12:37) Renden написал(а):
Trianon
Оу, название темы прочитал "между строк", сорри sad.gif в MSSQL там вроде есть аналог datepart(), заместо DATE_FORMAT

Спустя 1 день, 23 часа, 25 минут, 2 секунды (18.03.2011 - 12:02) zvezda_t написал(а):
А если напишу месяц не "01" а "1", будет правильное сравнение дат?

list($d, $m, $y) = explode('/', $sort_date2);   //  (31, 1, 2011)
$iso_date = sprintf("%04d%02d%02d", $y, $m, $d); // '2011131'


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.