powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как определить является ли строка датой
12 сообщений из 12, страница 1 из 1
Как определить является ли строка датой
    #32962131
Verunya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть строковое поле в которое иногда забивают дату. Подскажите запросик как вытащить именно даты...Знаю есть в MS SQL функция ISDATE может здесь что то похожее
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32963894
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, придется писать UDF самому.
Если надо, могу привести пример на Delphi. Под Windows, ес-сно.
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32965525
verunya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
надо!!! очень надо!!!
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32965919
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даты в одинаковом формате забиты или произвольном? и примерчик заполнения не помешает.
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32966030
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код Delphi:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 library  db2dlib;

 uses 
  SysUtils,
  Classes;

 type 
  PInteger = ^Integer;

 procedure  IsDate(Value: PChar; Result: PInteger;
  Value_Null: PInteger; Result_Null: PInteger); stdcall;
 const 
  VALUE_IS_NULL = - 1 ;
 begin 
   if  Value_Null^ = VALUE_IS_NULL  then 
    Result_Null^:= VALUE_IS_NULL
     else 
     try 
      StrToDate( string (Value));
      Result^:=  1 
     except 
      on E: Exception  do 
        Result^:=  0 
       end 
 end ;

 exports 
  IsDate index  0 ;

 begin 
 end .

Код DB2 SQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION EXP.IS_DATE(VARCHAR( 10 ))
  RETURNS SMALLINT
  EXTERNAL NAME 'db2dlib!IsDate'
  LANGUAGE C
  PARAMETER STYLE DB2SQL
  DETERMINISTIC
  NO SQL
  NO EXTERNAL ACTION

Пример вызова:
Код: plaintext
VALUES(EXP.IS_DATE('01.01.2005'))

Если строка является датой, то возвращает 1. Если нет, то 0. Если NULL, то NULL.
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32966342
q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
q
Гость
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32966600
q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
q
Гость
-180
-181
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32970457
verunya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golsaДаты в одинаковом формате забиты или произвольном? и примерчик заполнения не помешает.

Дата забита в формате дд.мм.гггг: "12.10.2003abc" например...Либо "12.10.2003".
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32971231
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В строках дата с начала или может встретиться в середине? Кроме даты другие числа встречаются? Первое число (или январь) 1, 01 или как душе угодно было (дата постоянную длину = 8 имеет или нет)?
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32972617
verunya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golsaВ строках дата с начала или может встретиться в середине? Кроме даты другие числа встречаются? Первое число (или январь) 1, 01 или как душе угодно было (дата постоянную длину = 8 имеет или нет)?

Дата всегда стоит в начале строки и всегда имеет постоянную длину =10, январь пишется как 01
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32972764
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select
// дата в формате гггг-мм-дд преобразуется из string в date без проблем
date(substr(ltrim(FiledName),7,4)+'-'+substr(ltrim(FiledName),3,2)+'-'+substr(ltrim(FiledName),1,2) as mydate
from
...
where
Strpos(ltrim(FiledName),' .200') = 6 or Strpos(ltrim(FiledName),' .199')=6
// если даты из 80х годов будут - добавь

В функции Strpos мог напутать порядок аргументов

Условие where можно через Like реализовать что-то вроде:
ltrim(FiledName) like '[0-3][0-9].[0-1][0-9].[1-2][09][098][0-9]%'

Я точно не помню DB2-шного синтаксиса like по части допустимых символов на данном знакоместе, а проверить - не на чем.
...
Рейтинг: 0 / 0
Как определить является ли строка датой
    #32972771
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вдруг засомневался может функция возврата начала подстроки в строке - Posstr
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как определить является ли строка датой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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