Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форматирование даты при выводе 
:(
    Опции темы
pavelv
Дата 23.6.2008, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 5.2.2006

Репутация: нет
Всего: нет



При выполнении запроса выдаёт дату в формате: YYYY-MM-DD.
Запрос: 
Код

select 'вручено'||DAT 
from TAble

Думал функцией to_char, но не работает. Можно конечно отдельно день, месяц и год извлечь но может можно как-нибудь по человечески одной функцией.
PM MAIL   Вверх
Deniz
Дата 23.6.2008, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(pavelv @  23.6.2008,  08:33 Найти цитируемый пост)
... может можно как-нибудь по человечески одной функцией.
можно, udf.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
pavelv
Дата 23.6.2008, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 5.2.2006

Репутация: нет
Всего: нет



А стандартного нет ничего? 
PM MAIL   Вверх
Deniz
Дата 23.6.2008, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(pavelv @  23.6.2008,  09:20 Найти цитируемый пост)
А стандартного нет ничего?  
пока вроде нет.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 23.6.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



попробуй написать процедуру, которая будет форматировать дату и возвращать в нужно формате

Добавлено через 3 минуты и 26 секунд
http://www.sql.ru/forum/actualthread.aspx?tid=566229
PM MAIL   Вверх
Deniz
Дата 23.6.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  23.6.2008,  13:53 Найти цитируемый пост)
попробуй написать процедуру, которая будет форматировать дату и возвращать в нужно формате
процедуру можно вставить только во from, с функцией работать удобнее.

pavelv, а может на клиенте отформатировать?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 23.6.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



доведёшь до кондиции

Код

CREATE OR ALTER PROCEDURE NEW_PROCEDURE (
    d1 DATE)
RETURNS (
    new_date VARCHAR(10))
AS
DECLARE VARIABLE d INTEGER;
DECLARE VARIABLE m INTEGER;
DECLARE VARIABLE y INTEGER;
begin
  d = EXTRACT(DAY from :d1);
  m = EXTRACT(MONTH from :d1);
  y = EXTRACT(YEAR from :d1);
  NEW_DATE = d || '.' || m || '.' || y;
  suspend;
end


Добавлено @ 11:20
Цитата(Deniz @  23.6.2008,  11:14 Найти цитируемый пост)
pavelv, а может на клиенте отформатировать?

ну дык грид тебе и покажет дату так, как ты установил в настройках системы

Это сообщение отредактировал(а) Akella - 23.6.2008, 11:21
PM MAIL   Вверх
Deniz
Дата 23.6.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  23.6.2008,  14:16 Найти цитируемый пост)
доведёшь до кондиции
а смысл?
Сначало-то было:
Код
select 'вручено'||DAT  from TAble
а с такой процедурой придется писать:
Код
select proc.new_date from table t1 left join New_Procedure(t1.DAT) proc on 1=1


Цитата(Akella @  23.6.2008,  14:16 Найти цитируемый пост)
ну дык грид тебе и покажет дату так, как ты установил в настройках системы
так это ж не мне надо.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 23.6.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deniz @  23.6.2008,  11:47 Найти цитируемый пост)
select proc.new_date from table t1 left join New_Procedure(t1.DAT) proc on 1=1

ого, а зачем соединять-то?

а может можно как-то так?
Код

select 'вручено'|| (select NEW_DATE from NEW_PROCEDURE(tr.lcd)) AS Date_Vrucheno  from treklama tr


Это сообщение отредактировал(а) Akella - 23.6.2008, 16:10
PM MAIL   Вверх
pavelv
Дата 24.6.2008, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 5.2.2006

Репутация: нет
Всего: нет



Akella да такой вариант рассматривал. Сделал, но не понравилось:
1) Громоздкость
2) Сегодняшний день выглядит так:24.6.2008, а хотелось бы 24.06.2008. Переделать не проблема, условие вставить фигня...но ещё больше усложнять изначально такой тривиальный запрос не хотелось smile.

По настройкам даты всё впорядке, если выполнить запрос в таком виде:
Код

select DAT 
from Table

то дата выдаётся в нужном формате, именно при конкатенации почему-то формат меняется...хотя собственно понятно почему. Спросил потому что думал может чего не знаю и наверняка можно форматировать дату непосредственно при выводе. В итоге забил и сделал банальное условие после выполнения запроса непосредственно в delph-ах. И красивее и понято чего хочется...
За советы всем спасибо конечно  smile 
PM MAIL   Вверх
Deniz
Дата 24.6.2008, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Вот и автор появился пока я писал ответ.

Это сообщение отредактировал(а) Deniz - 24.6.2008, 05:17


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 24.6.2008, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(pavelv @  24.6.2008,  05:12 Найти цитируемый пост)
при конкатенации почему-то формат меняется...хотя собственно понятно почему.

Как это меняется, не знал про такое? Почему?
PM MAIL   Вверх
Deniz
Дата 24.6.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  24.6.2008,  10:38 Найти цитируемый пост)
Как это меняется, не знал про такое? Почему? 
потому что выполняется cast(date as varchar(25)) и в строку преобразовывает сам FireBird по своим форматам. Где их можно настроить не знаю  smile 


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
pavelv
Дата 2.7.2008, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 5.2.2006

Репутация: нет
Всего: нет



Долго не заходил, Deniz у меня таже идея была. Тоесть при обычном выводе используются настройки винды, а при конкатенации настройки sql-сервера вот и происходит фигня какая-то smile.
PM MAIL   Вверх
Deniz
Дата 2.7.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(pavelv @  2.7.2008,  09:58 Найти цитируемый пост)
Тоесть при обычном выводе используются настройки винды
не совсем так. Форматирует тот клиент, из которого запускаешь запрос, и в большинстве случаев все форматы можно настроить "под себя".
Если память не изменяет, была такая утилита WSQL еще в InterBase 5.x, так вот она выводила дату по формату InterBase.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1268 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.