Конференция "Начинающим" » Узнать тип значения
 
  • Дмитрий (29.03.17 10:40) [0]
    Здравствуйте!
    Работаю c FB2.5
    Как узнать является ли значение поля датой или нет.
    например. В поле Text Varchar(100) храниться текст
    01.01.2001
    00.00.2002
    31.02.2003
    Нужно в поле этой же таблицы (например Date_in DATE)
    вставить значение поля TEXT, ели значение является датой.
    Нужно сделать не в Delphi,  а в самом SQL-запросе.
  • Игорь Шевченко © (29.03.17 12:21) [1]
    Это какая же нормальная форма будет ?


    > в самом SQL-запросе.


    Для FB проще UDF сделать, мне кажется.
  • lima200 (01.04.17 03:06) [2]
    как решение не претендую, но разьве FB не поддерживает (знаю в теории) - хранимые процедуры? Если да, то там пишем такую - перевод значения из таблицы в дату, обернутую в исключение с реакцией на ошибку.

    или (теория) в Д, при переборе\добавлении\др

    function mytestdt(const s:string):integer;
    var d:tdatetime;
    begin
    result:=0;
    try
    d:=strtodatetime(s); //d:=strtodate(s);//d:=strtotime(s);//как вариант
    result:=1;
    except
    result:=-1;
    end;
    end;
  • Дмитрий (02.04.17 11:25) [3]

    > Для FB проще UDF сделать, мне кажется.

    Как вариант.


    > lima200   (01.04.17 03:06) [2]


    > как решение не претендую, но разьве FB не поддерживает (знаю
    > в теории) - хранимые процедуры?

    Поддерживает. Только как обработать исключительную ситуацию в ней не могу найти. Там нет такого как в delphi: try ... except


    > function mytestdt(const s:string):integer;
    > var d:tdatetime;
    > begin
    > result:=0;
    > try
    > d:=strtodatetime(s); //d:=strtodate(s);//d:=strtotime(s);
    > //как вариант
    > result:=1;
    > except
    > result:=-1;
    > end;
    > end;
    >
    >

    Без комментариев
  • lima200 (06.04.17 00:28) [4]
    >> Только как обработать исключительную ситуацию

    http://firebirdsql.su/doku.php?id=exception

    это одно их первых на поиск строки в Яндексе

    "firebird хранимые процедуры исключительные ситуации"

    оно?
  • lima200 (06.04.17 00:32) [5]
    еще https://it.wikireading.ru/36950
    ну и поиском. там кста на interbase похоже многое
  • manaka © (06.04.17 10:51) [6]

    > Нужно в поле этой же таблицы (например Date_in DATE)
    > вставить значение поля TEXT, ели значение является датой.
    >


    А если в поле TEXT хранится "25 сентября 2015 года"?
  • Manaka © (06.04.17 14:41) [7]

    > Нужно в поле этой же таблицы (например Date_in DATE)
    > вставить значение поля TEXT, ели значение является датой.


    А если в TEXT хранится только в виде "ХХ.ХХ.ХХХХ", оно и не вставится в случае "не дата", если Date_in типа DATE
  • Kilkennycat © (06.04.17 21:15) [8]

    >
    > А если в поле TEXT хранится "25 сентября 2015 года"?

    ну, если известен шаблон формата, по которому эта строка получена, обратить непроблема
  • manaka © (06.04.17 21:45) [9]
    Если известен шаблон, как в TEXT попадет "не дата"? А перебирать все возможные шаблоны - проще юзера убить.
  • Kilkennycat © (06.04.17 22:10) [10]

    >  А перебирать все возможные шаблоны - проще юзера убить.

    ну, если это в пределах одной программы - то убить надо программера.
    Но возможна такая ситуация: в пределах программы всё хорошо, всё логично, дата не текст и любые форматы хранятся-обрабатываются  и т. д. А потом сказали: а вот у нас есть тут файлики екселевские, нам их филиалы шлють, а нам бы их импортировать бы... а тама и сюнтябрь, и березень, и год впереди - какой филиал как хотел.
  • Palladin © (06.04.17 22:30) [11]

    > Как узнать является ли значение поля датой или нет.
    > например. В поле Text Varchar(100) храниться текст

    тип значения: string[100]
  • Юрий Зотов © (06.04.17 22:41) [12]
    Иногда точная дата бывает неизвестна и в текстовом поле может быть записано что-то типа 00.00.2016 (то есть, известен только год). Конечно, такие даты обрабатываются особым образом, по административно утвержденным правилам.
  • rrrrr © (07.04.17 12:04) [13]
    "собрание состоится в среду,
    но всем приходить на день раньше."

    - Петька, почему в среду и почему на день раньше?
    - Василий Иваныч, я смотрел в словаре как пишется "фторник", но на эту букву там только "фуфайка"
  • Юрий Зотов © (09.04.17 18:33) [14]
    > rrrrr ©   (07.04.17 12:04) [13]

    Увы, ситуация не выдумана, а взята из реальной практики.

    В пруду нашли утопленника. Эксперты говорят, что плавал он там от месяца до  двух.

    Какую дату смерти должен ставить ЗАГС в свидетельстве о смерти?
 
Конференция "Начинающим" » Узнать тип значения
Есть новые Нет новых   [118640   +43][b:0][p:0.001]