Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
Топик располагается на нескольких страницах: 1 2 [все] |
Бригадир Member Откуда: Москва Сообщений: 19 |
Подскажите пж почему запрос
возвращает 01/02/0019 И как исправить первые две цифры года? Спасибо. |
||
1 фев 19, 10:52 [21799399] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
Бригадир, а в чем смысл преобразовывать дату в дату? но если по делу - то смотрите в сторону NLS-настроек сессии. Особенно, для сокращенного формата даты... |
1 фев 19, 11:00 [21799407] Ответить | Цитировать Сообщить модератору |
oragraf Member Откуда: Moscow Сообщений: 1182 |
Бригадир, вот предположим, твой пол - male. приходишь ты в клинику и говоришь - хочу конвертнуть свой пол в male. Доктор - хозяин-барин! После операции - твой пол male, но не совсем то, что ты хотел. |
1 фев 19, 11:01 [21799409] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
|
||
1 фев 19, 11:01 [21799410] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
|
||
1 фев 19, 11:02 [21799414] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
|
||||
1 фев 19, 11:05 [21799416] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
|
||||
1 фев 19, 11:06 [21799418] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
Бригадир, а вам для подумать: выполните в своей сессии команду: alter session set nls_date_format = 'dd-mm-yyyy' Затем - повторите свой запрос. Попробуйте изменить формат даты на такое: alter session set nls_date_format = 'yyyy-mm-dd' Снова выполните свой запрос. Немного подумайте и ответьте на вопрос: вы уверены, что у всех клиентов, которые будут исполнять написанный вами код, нлс-настройки будут совпадать с вашими? |
1 фев 19, 11:07 [21799422] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
у разных клиентов разные настройки базы куда я не лезу. простой транк иногда ставит месяц на первое место а иногда день например 1/02/2018 или 2/01/2018 вот я и привожу к общему виду сначала а потом в нужную строку и группрую записи по датам нужно обязательно все это разжевывать? нк разжевал.. так какой nls надо алтерить? ораклисты.. |
1 фев 19, 11:31 [21799446] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
Вы сами на свой вопрос и ответили. |
||
1 фев 19, 11:33 [21799451] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
если, как вы утверждаете, вы приводите всё к одному виду, то отчего возникает РАЗНОЕ отображение у разных клиентов? Видимо, рекомендацию ПОДУМАТЬ вы, всё же, проигнорировали.... |
||
1 фев 19, 11:35 [21799456] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
детка, говнокодинг у тебя в голове.. команду ПОДУМАТЬ оставь для своих деток.. отвечай на вопрос или иди лесом. |
||||
1 фев 19, 11:38 [21799459] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
Бригадир, вам же уже -2- намекнул, что вы дату сначала (неявно) переводите в какой-то хрен пойми какой (зависит от NLS-настроек выполняющего клиента) формат строки. затем из этой строки (опять же неявно) переводите из хрен пойми какого формата (полученного на предыдущем шаге) в дату . причем, утверждая, что строка имеет ровно тот формат, который вы записали в своей форматной маске. А после - ещё и удивляетесь, что получили кривой результат. Про выставление NLS-параметра вам было намекнуто для того, чтобы показать, что код, в общем случае, мог и не отработать. вообще. упасть с ошибкой. в зависимости от NLS-настроек клиента. а мог отработать, но выдать совершенно неправильный результат (ваш пример со вторым января и первым февраля). И тут я даже не знаю что лучше - получить неверные результат или упасть с ошибкой... |
1 фев 19, 11:42 [21799465] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28679 |
P.S. Аня, ещё не задумалась о пользе метания бисера перед свиньями? |
||||
1 фев 19, 11:43 [21799469] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
воинствующий ламер детектед...... |
||
1 фев 19, 11:44 [21799470] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
|
||
1 фев 19, 11:46 [21799474] Ответить | Цитировать Сообщить модератору |
Dshedoo Member Откуда: Сообщений: 263 |
Гуглится в первой же строке.SELECT TO_DATE(SYSDATE, 'DD-MM-RRRR HH24:MI') R FROM DUAL |
1 фев 19, 11:52 [21799480] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
Dshedoo, помощник бригадира? переложить NLS-бомбу с одного места на другое - находите это решением проблемы? ;) ![]() |
1 фев 19, 11:54 [21799483] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28679 |
|
||
1 фев 19, 11:56 [21799484] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
Щукина Анна, еще раз рассказываю. сотни СОТНИ клиентов на разных базах ( МС СКЛ, Оракл ) у кого-то дата хранится DD.MM.YY DD.MM.YYYY MM.DD.YYYY MM.DD.YY что нужно делать? 1) альтерить сессию 2) если не альтерить сессию, то сначала привести дату в нужный ОБЩИЙ формат ДАТЫ DD.MM.YYYY а затем ее TRUNC чтобы получить просто дату без времени, и сгруппировать по датам.. Вот и все.. что тут не ясно.. и зачем заставлять людей все разжевывать, если Вы уже написали параметр сессии? хотите помочь? просто помогите и все.. скажу спасибо.. что за русский стандарт - сначала говном полить, а затем съесть? |
1 фев 19, 11:56 [21799485] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
Elic, сам ты дЭбил.. троль тупой. |
1 фев 19, 11:58 [21799489] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
|
||
1 фев 19, 12:02 [21799493] Ответить | Цитировать Сообщить модератору |
Dshedoo Member Откуда: Сообщений: 263 |
Не слушай их, друг. Они просто ещё не опытные. Используй тот вариант, который я указал и будет тебе счастье ;) |
||
1 фев 19, 12:03 [21799494] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
у меня не SYSDATE в программе, а данные из таблицы в формате DATE |
||||
1 фев 19, 12:03 [21799496] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1227 |
Для начала нужно понять простую вещь: внутренний формат представления даты для СУБД и текстовое отображения даты для пользователя в виде строки определенного формата - это вещи, в общем случае, "взаимно перпендикулярные". Пока вы этого не поймете - дальше двигаться в данном вопросе смысла нет... |
||
1 фев 19, 12:03 [21799497] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
SQL> SELECT TO_DATE(SYSDATE, 'DD-MM-RRRR HH24:MI') R, to_char(sysdate, 'yyyy-mm-dd hh24:mi') q FROM DUAL; R Q --------------- ---------------- 01+01=0001 1234 2019-02-01 12:03 SQL> |
||
1 фев 19, 12:04 [21799499] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
RRRR - спасибо.. классно. |
||
1 фев 19, 12:06 [21799504] Ответить | Цитировать Сообщить модератору |
Бригадир Member Откуда: Москва Сообщений: 19 |
Вы просто не умеете слушать и слышать.. я рад за Ваши познания в этом вопросе. И тем не менее я ответ на свой вопрос получил. Возможно Вы базистка, а я программиист, и мне нужно работать со строками для отображения.. как и зачем - это долго объяснять, потому я и задал кратко и лаконично свой вопрос в первом посте. А зачем и почему - это уже излишняя информация.. Я этому научился на международных программерских форумах, начиная с 1993 года.. И, кстати, термин "говнокод" впервые написал я на крупном в те времена форуме С++ программистов.. Так что в следующий раз ставьте это слово в кавычки.. :) При всем при том, что я относительно вымазался в дерьме, скажу всем спасибо и особенно за RRRR |
||||
1 фев 19, 12:14 [21799513] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
|
||
1 фев 19, 12:21 [21799521] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
rrrr НЕВЕРНЫЙ ответ Если поля в таблицах имеют тип DATE, для группировки "без времени" Вам надо использовать функцию TRUNC зи select ... from ... where ... group by ...,trunc(my_date),... ... ..... stax |
||
1 фев 19, 12:38 [21799546] Ответить | Цитировать Сообщить модератору |
jan2ary Member Откуда: Киев Сообщений: 1715 |
Бригадир, Запустил SQL Developer и просто выполнил запрос, получил ошибку: SQL> SELECT TO_DATE(SYSDATE, 'DD-MM-RRRR HH24:MI') R FROM DUAL; Error starting at line : 2 in command - SELECT TO_DATE(SYSDATE, 'DD-MM-RRRR HH24:MI') R FROM DUAL Error report - ORA-01858: a non-numeric character was found where a numeric was expected так что будьте готовы потом к всяким сюрпризам, подземным стукам и невоспроизводимым багам. |
1 фев 19, 14:22 [21799712] Ответить | Цитировать Сообщить модератору |
oragraf Member Откуда: Moscow Сообщений: 1182 |
Бригадир, тебе пытаются объяснить, что у даты нет формата |
1 фев 19, 15:55 [21799849] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
почему нет, есть
..... stax |
||
1 фев 19, 16:07 [21799865] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: 1 2 [все] |
Все форумы / Oracle | ![]() |