powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / работа с датами
25 сообщений из 29, страница 1 из 2
работа с датами
    #39265215
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день.
Досталась мне база в которой дата записана в текстовом поле. Разделитель может быть: ".", "/", "-".
Как мне в селекте выбрать все записи которые больше определенной даты.
cast обломался на разделителе "/".
или как мне одним запросом заменить по полю все "/" на "."
с "." cast работает нормально
...
Рейтинг: 0 / 0
работа с датами
    #39265218
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Заменить-то можно, но ты уверен, что у тебя в датах с разделителями "-/" дата именно в формате DD.MM.YYYY?
...
Рейтинг: 0 / 0
работа с датами
    #39265221
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

для замены подстроки в строке существует функция REPLACE
...
Рейтинг: 0 / 0
работа с датами
    #39265224
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисakrush,

для замены подстроки в строке существует функция REPLACE
Если можно подскажите точно синтаксис. Название таблицы SUB, Поле по которому нужно провести замену d2_t
...
Рейтинг: 0 / 0
работа с датами
    #39265227
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterakrush,

Заменить-то можно, но ты уверен, что у тебя в датах с разделителями "-/" дата именно в формате DD.MM.YYYY?
Формат точно DD.MM.YYYY. Вот только в апреле может получится 31 день, но это уже мои "грабли", буду сам из выравнивать
...
Рейтинг: 0 / 0
работа с датами
    #39265228
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Пусть сначала на мой вопрос ответит, а то наменяет и получит мусор в таблице. Пусть хотя бы отдельный столбец добавит.
...
Рейтинг: 0 / 0
работа с датами
    #39265233
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterСимонов Денис,

Пусть сначала на мой вопрос ответит, а то наменяет и получит мусор в таблице. Пусть хотя бы отдельный столбец добавит.

Спасибо за подсказку. Действительно так надежней не потерять важные данные
Новый столбец будет иметь имя NEW_d2_t
...
Рейтинг: 0 / 0
работа с датами
    #39265236
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
update TableName
  set FieldName=replace(SourceField,'-','.')
where ....

update TableName
  set FieldName=replace(SourceField,'/','.')
where ....

update TableName
  set TargetDateField=cast(FieldName as Date)
where ....



Я предлагаю добавить поле типа varchar() для хранения промежуточного результата и еще наверное поле типа Date для записи результата. Чтобы "если что не так" - ничего не поломать.
...
Рейтинг: 0 / 0
работа с датами
    #39265238
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushcast обломался на разделителе "/".CAST не ломается на разделителе, ты обманываешь.
CAST ломается на неправильной записи даты.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t(s) as (
  select '31.01.2015' from rdb$database union all
  select '01/31/2015' from rdb$database union all
  select '01-31-2015' from rdb$database
)
select
  cast(s as date) as n
from t

-- результат
31.01.2015
31.01.2015
31.01.2015
...
Рейтинг: 0 / 0
работа с датами
    #39265242
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushЕсли можно подскажите точно синтаксис. Название таблицы SUB, Поле по которому нужно провести замену d2_t

не подскажу. Лень мне. Тем более что всё это есть в документации Firebird_3_0_Language_Reference_RUS
...
Рейтинг: 0 / 0
работа с датами
    #39265243
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryCAST ломается на неправильной записи даты.


Там таки закралась какая-то лажа в данных.
...
Рейтинг: 0 / 0
работа с датами
    #39265470
stelvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryakrushcast обломался на разделителе "/".CAST не ломается на разделителе, ты обманываешь.
CAST ломается на неправильной записи даты.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t(s) as (
  select '31.01.2015' from rdb$database union all
  select '01/31/2015' from rdb$database union all
  select '01-31-2015' from rdb$database
)
select
  cast(s as date) as n
from t

-- результат
31.01.2015
31.01.2015
31.01.2015


Ну он же написал, что формат везде DD.MM.YYYY не смотря на разделители. А ФБ считает, что раз / в качестве разделителя до должно быть MM/DD/YYYY
...
Рейтинг: 0 / 0
работа с датами
    #39265490
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterakrush,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
update TableName
  set FieldName=replace(SourceField,'-','.')
where ....

update TableName
  set FieldName=replace(SourceField,'/','.')
where ....

update TableName
  set TargetDateField=cast(FieldName as Date)
where ....



Я предлагаю добавить поле типа varchar() для хранения промежуточного результата и еще наверное поле типа Date для записи результата. Чтобы "если что не так" - ничего не поломать.

Спасибо, сейчас попробую
...
Рейтинг: 0 / 0
работа с датами
    #39265531
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при попытке выполнить вот это:
update TableName
set TargetDateField=cast(FieldName as Date)
Обломалось, т.к. в старой программе не было контроля ввода дат и народ повводил 31 апреля, 31 июня.
Как это можно отловить? :( и подправить
...
Рейтинг: 0 / 0
работа с датами
    #39265535
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
промежуточный столбец с заменой лишних символов я уже сделал. Все получилось, всем огромное спасибо.
...
Рейтинг: 0 / 0
работа с датами
    #39265537
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushКак это можно отловить?
Выбирать записи по одной, пробовать кастить, ловить исключения, записывать данные, их
вызвавшие. execute block тебе в руки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами
    #39265543
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Спасибо,
Я придумал сделать замену 31/04/2015 на 30/04/2015
...
Рейтинг: 0 / 0
работа с датами
    #39265544
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovakrushКак это можно отловить?
Выбирать записи по одной, пробовать кастить, ловить исключения, записывать данные, их
вызвавшие. execute block тебе в руки.


Я еще не умею :(
...
Рейтинг: 0 / 0
работа с датами
    #39265547
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще только учусь :)
...
Рейтинг: 0 / 0
работа с датами
    #39265548
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Тогда внимательно читай руководство по языку - там все есть - для тебя ж старались.
...
Рейтинг: 0 / 0
работа с датами
    #39265554
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterakrush,

Тогда внимательно читай руководство по языку - там все есть - для тебя ж старались.

Спасибо. Буду грызть гранит науки.

П.С. нашел еще даты 00.00.0000 и 01.01.0000 :(
...
Рейтинг: 0 / 0
работа с датами
    #39265555
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как всегда забыл написать: версия ФБ 2,5
...
Рейтинг: 0 / 0
работа с датами
    #39265562
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Здесь руководства по 2.5,3.0 и даже :) 4.0

https://app.assembla.com/spaces/firebird-russian-documentation/wiki
...
Рейтинг: 0 / 0
работа с датами
    #39265592
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stelvicНу он же написал, что формат везде DD.MM.YYYY не смотря на разделители.Все пациенты врут (ц).
К тому же он ответил по наводящему вопросу, что лично у меня всегда снижает веру в достоверность.
Раз у него получилось - я рад.
...
Рейтинг: 0 / 0
работа с датами
    #39265626
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разбираюсь в execute block.
Я знаю как это написать на Делфи, но думаю что разберусь и тут.
Вопрос: execute block сам идет по каждой записи и выполняется или мне нужно цикл организовать для перебора строк

П.С. прошу гнилыми помидорами не забрасывать. Хочу понять как работает чтобы правильно все написать.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / работа с датами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]