Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение дат 
:(
    Опции темы
Firebird
Дата 13.9.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



  Есть скрипт:

Код

#Подключение к БД sample
my $dbh = DBI -> connect("DBI:mysql:sample", "root", "");

#Получение данных
my $query = $dbh -> prepare("
        select service_name, date(service_date)
        from service
      ");
$query -> execute();

#Обработка полученных данных
while(@row = $query -> fetchrow_array)
{
  $service_name = $row[0];
  $service_date = $row[1];

  if($service_date <= '2005-12-30')   [color=blue]#Неправильно сравниваются!!![/color]
  {
     function_1();
  }
  else
  {
     function_2();
  }
}

$query -> finish();
$dbh -> disconnect();

sub function_1
{
  ....
}

sub function_2
{
  ....
}


Как сравнить переменные как даты, а не как строки?
PM MAIL   Вверх
BlackLFL
Дата 13.9.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



без проблем, приведите даты, например, к секундам, и сравните результат.
Для этого рекомендую воспользоваться модулем Date::Manip - date manipulation routines, либо функциями базы данных.

Это сообщение отредактировал(а) BlackLFL - 13.9.2007, 12:07
PM WWW   Вверх
Firebird
Дата 14.9.2007, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Код

#!/usr/bin/perl
use Date::Manip;

print "Content-type: text/html\n\n";
print "<html><h1>Hello!</h1></html>\n";
print @INC;
$version = DateManipVersion;
print "version = $version<br>";
$y = '2007';
$days = Date_DaysInYear($y);
print "days = $days<br>";

#Дальше не работает. Ошибка: Unable to determin TIME ZONE

$date1 = ParseDate($string1);
$date2 = ParseDate($string2);
$flag = Date_Cmp($date1,$date2);
if ($flag<0)
{
    # date1 is earlier
}
elsif ($flag==0)
{
    # the two dates are identical
}
else
{
    # date2 is earlier
}

  
  Возникает ошибка: Unable to determine TIME ZONE
  В описании ошибки сказано, что нужно определить временную зону. Вроде для этого используют функцию Date_Init.
 Как настроить TIME ZONE
PM MAIL   Вверх
BlackLFL
Дата 14.9.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



TIME ZONES
Код

$ENV{'TZ'} = "GMT";


Это сообщение отредактировал(а) BlackLFL - 14.9.2007, 10:05
PM WWW   Вверх
Firebird
Дата 14.9.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



  Ура!!! Получилось. Вот скрипт:

Код

#!/usr/bin/perl
use Date::Manip;

print "Content-type: text/html\n\n";
print "<html><h1>Hello!</h1></html>\n";

#Устанавливаем параметр TIME ZONE
$ENV{'TZ'} = "GMT";

#Преобразуем строковые даты, чтобы их можно было сравнивать
$string1 = '2005-08-15';
$string2 = '2005-08-16';
$date1 = ParseDate($string1);
$date2 = ParseDate($string2);

#Сравниваем
$flag = Date_Cmp($date1,$date2);
print "flag = $flag<br>";
if ($flag<0)
{
   print "date1 is earlier";
}
elsif ($flag==0)
{
   print "the two dates are identical";
}
else
{
    print "date2 is earlier";
}


  Большое спасибо, BlackLFL, очень помог!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.