Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как определить является ли строка датой / 12 сообщений из 12, страница 1 из 1
16.03.2005, 07:48
    #32962131
Verunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
Есть строковое поле в которое иногда забивают дату. Подскажите запросик как вытащить именно даты...Знаю есть в MS SQL функция ISDATE может здесь что то похожее
...
Рейтинг: 0 / 0
16.03.2005, 16:10
    #32963894
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
Наверное, придется писать UDF самому.
Если надо, могу привести пример на Delphi. Под Windows, ес-сно.
...
Рейтинг: 0 / 0
17.03.2005, 12:15
    #32965525
verunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
надо!!! очень надо!!!
...
Рейтинг: 0 / 0
17.03.2005, 14:11
    #32965919
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
Даты в одинаковом формате забиты или произвольном? и примерчик заполнения не помешает.
...
Рейтинг: 0 / 0
17.03.2005, 14:45
    #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
17.03.2005, 16:22
    #32966342
q
q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
...
Рейтинг: 0 / 0
17.03.2005, 17:42
    #32966600
q
q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
-180
-181
...
Рейтинг: 0 / 0
21.03.2005, 08:18
    #32970457
verunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
golsaДаты в одинаковом формате забиты или произвольном? и примерчик заполнения не помешает.

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

Дата всегда стоит в начале строки и всегда имеет постоянную длину =10, январь пишется как 01
...
Рейтинг: 0 / 0
22.03.2005, 09:40
    #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
22.03.2005, 09:43
    #32972771
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить является ли строка датой
Что-то вдруг засомневался может функция возврата начала подстроки в строке - Posstr
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как определить является ли строка датой / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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