Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом / 11 сообщений из 11, страница 1 из 1
22.06.2007, 11:26
    #34612999
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Доброго времени суток!

Написан скрипт для создания вьюз на оракле и в запросе используются to_date и to_char функции.

Код: plaintext
1.
2.
3.
create or replace view orcl_data 
(dbname,aliasname,timestamp,datewithminutes,datewithhours, datecolumn) as 
select a.dbname,a.aliasname,b.timestamp, to_date(to_char(b.timestamp,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') as datewithminutes, to_date(to_char(b.timestamp,'YYYY-MM-DD HH24'),'YYYY-MM-DD HH24') as datewithhours,to_date(to_char(b.timestamp,'YYYY-MM-DD'),'YYYY-MM-DD') as datecolumn from oraaudit b,databases a where returncode> 0  and a.dbid=b.dbid;

В оракле я могу задать маску YYYY-MM-DD HH24 и все сработает результат вернется = дата + часы, но когда пытаюсь выполнить в дб2 возвращается ошибка. Оказывается такое в дб2 не прокатывает, нужно указывать всю маску YYYY-MM-DD HH24:MI:SS. Как можно обойти это место?
...
Рейтинг: 0 / 0
22.06.2007, 13:59
    #34613685
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Здравствуйте.

Я правильно понял, что вы хотите получить из исходного timestamp:
- timestamp только с датой и часом
- timestamp только с датой
и т.д.

Так?
...
Рейтинг: 0 / 0
22.06.2007, 15:14
    #34613990
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
авторЗдравствуйте.

Я правильно понял, что вы хотите получить из исходного timestamp:
- timestamp только с датой и часом
- timestamp только с датой
и т.д.

Так?

Да, вы совершенно правы.
...
Рейтинг: 0 / 0
22.06.2007, 16:51
    #34614365
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Для обрезания всего, кроме часов:
Код: plaintext
1.
2.
3.
4.
5.
values 
  current timestamp 
- minute(current timestamp) minutes
- second(current timestamp) seconds
- microsecond(current timestamp) microseconds

Для обрезания всего, кроме часов и минут:
Код: plaintext
1.
2.
3.
4.
values 
  current timestamp 
- second(current timestamp) seconds
- microsecond(current timestamp) microseconds
Вместо current timestamp вставьте любой timestamp.
...
Рейтинг: 0 / 0
26.06.2007, 11:53
    #34619572
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
авторДля обрезания всего, кроме часов:
values
current timestamp
- minute(current timestamp) minutes
- second(current timestamp) seconds
- microsecond(current timestamp) microseconds

minute и second это скалярные функции которые возвращают минуты и секунды из аргумента time, timestamp, time duration, timestamp duration, or a valid character string representation of a time or timestamp.

Мне чтобы получить дату с часами нужно использовать конкатенацию в запросе?

Вот что у меня получилось:
Код: plaintext
select CHAR(date(current timestamp))||' '||CHAR(hour(current timestamp))  from sysibm.sysdummy1
...
Рейтинг: 0 / 0
26.06.2007, 12:06
    #34619633
xz
xz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Ты не пробовал выполнить запросы которые тебе Марк указал?
...
Рейтинг: 0 / 0
26.06.2007, 12:33
    #34619744
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
авторТы не пробовал выполнить запросы которые тебе Марк указал?

А ты там видешь запросы?

Если я буду использовать minute(current timestamp) то вернетяся только минута из аргумента.
...
Рейтинг: 0 / 0
26.06.2007, 12:49
    #34619820
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
IMHO, глупо переписывать запросы один в один, тем более не понимая зачем это нужно.

Моежет это подойдет

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
db2 values int(current date)* 100  + int(current time)/ 10000 

 1 
-----------
  2007062612 

   1  record(s) selected.
...
Рейтинг: 0 / 0
26.06.2007, 17:37
    #34620995
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Спасибо за ответы.

приходится переписывать запросы для db2, поскольку уже все работает для Oracle и PG. Согласен что самое оптимально использовать числа и непрерводить в char а затем опять в date. Хочеться пока написать для дб2 правильно, затем исправить для Oracle и PG.

Я знаю что в Oracle есть функция trunc ( date, [ format ] ). Есть что то подобное для DB2?
...
Рейтинг: 0 / 0
28.06.2007, 12:51
    #34625875
ГОСТЬ_в_ДБ2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Если использовать такую конструкцию для обрезания минут и секунд...

Код: plaintext
values  timestamp_format((char(current date)||' '||rtrim(CHAR(hour(current timestamp)))||':00:00'), 'YYYY-MM-DD HH24:MI:SS')

Есть другие способы?
...
Рейтинг: 0 / 0
28.06.2007, 14:10
    #34626129
тлгдшмлщ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
http://www.ibm.com/developerworks/db2/library/samples/db2/0205udfs

Только производительность не забудь проверить
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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