![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
Всем привет! У меня такая проблема. Есть dbf файл (Rst_0.dbf), я к нему обращаюсь напрямую из перла, дата в этом файле в формате 7.11.2008, при выполние вот этого кода:
use DBD::Xbase; my $xbase_dbh = DBI->connect("DBI:XBase:.", undef, undef, {RaiseError =>1}); my $sel = "select RESULTDATE from Rst_0.dbf"; my $sel_csr = $xbase_dbh->prepare($sel); $sel_csr->execute(); while (my ($dt) = $sel_csr->fetchrow_array()) { print " $dt\n"; print "<br>"; } дата выдается как 200811, т.е. выдается год и месяц, а день отсекается. Предполагаю, что нужно здесь использовать преобразование формата как для MySQL: my $sel = "select DATE_FORMAT(RESULTDATE,'%d.%m.%y %H:%i') from Rst_0.dbf"; но не прокатывает! Может кто нибудь сможет помочь? |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
||||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
Поигрался с датой, пришел к такому выводу: Если в dbf файле дата до 10 числа, т.е. 01.11.2008 .......09.11.2008, то в результате выполнения данного скрипта выводится дата как 200811. А если дата в файле 10.11.2008 или 11.11.2008 и т.д. то выводится корректно: 20081110. Следственно баг в самом модуле XBase, либо у меня руки кривые
|
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
tapio, у вас база не очень большая? может выложите, а я у себя бы проверил. просто под рукой нет dbf баз
|
|||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
||||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
посмотрите в структуре создается запись
0TKGRP INCOMING OFFICE TRAFFIC 200811 701:30:00 тогда как для 0TKGRP INCOMING OFFICE TRAFFIC 2008111007:30:00 вместо нуля пустое место. Из-за этого проблемы |
|||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
Спасибо! Начинает ситуация прояснятся. А вы как просматриваете этот dbf файл?
Просто я в Access его открываю, там дата отражается как 07.11.2008. |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
tapio, а я человек простой
пробовал тупо заменить регуляркой $_ =~ s/(\d{6})\s(\d)/$1$num$2/g; где $num =0 но файл на 1 байт получается больше, не могу понять почему |
|||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
Моя мысль копия твоей, тоже пытаюсь регуляркой заменить, но пока безрезультатно :(
|
|||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
shamber
Так в файл 0 добавляем, вот и получается. Или я гоню? |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Все разобрался
Я забыл что файл не текстовый, а бинарный Я ваш файл обработал этим скриптом, а после этого у меня совершенно спокойно появилось число 20081107
Это сообщение отредактировал(а) shamber - 28.1.2009, 22:13 |
|||
|
||||
| tapio |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
shamber
Спасибо тебе огромное! Очень помог мне! Я решил без временного файла делать, а перезаписывать этот.
|
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Всегда пожалуйста
ЗЫ отмечайте вопрос как решенный Это сообщение отредактировал(а) shamber - 29.1.2009, 21:47 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |