правильный формат даты в ХП - DD.MM.YYYY
правильный формат даты в ХП - DD.MM.YYYY
Внутри хранимой процедуры соединяю VARCHAR поле с полем DATE
...
OPERATIONS_INFO = :OP_SHORT_NAME || ' ' || :V_OP_DATE;
...
- как сделать чтобы поле DATE было в правильном формате DD.MM.YYYY
сам FB по умолчанию делает формат YYYY.MM.DD
Обязательно использовать UDF???
...
OPERATIONS_INFO = :OP_SHORT_NAME || ' ' || :V_OP_DATE;
...
- как сделать чтобы поле DATE было в правильном формате DD.MM.YYYY
сам FB по умолчанию делает формат YYYY.MM.DD
Обязательно использовать UDF???
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Можно ещё так:break писал(а):Может есть еще варианты ???
Код: Выделить всё
substring(current_date from 9 for 2)||'.'||
substring(current_date from 6 for 2)||'.'||
substring(current_date from 1 for 4)
нолики можно и добавить =)
Код: Выделить всё
CREATE PROCEDURE LPAD (
str varchar(60),
count_ integer,
substr varchar(10))
returns (
result varchar(60))
as
begin
/* Дополнение строки слева (LPAD)
Функция Дополнение строки слева заданными символами.
Спецификация
LPAD (<строка>, <длина> [, <подстрока> ])
<строка> ::= <значимое символьное выражение>
<длина> ::= <значимое числовое выражение>
<подстрока> ::= <значимое символьное выражение>
Общие правила
1. <Строка> дополняется слева указанной в <подстроке> последовательностью символов до указанной <длины> (возможно, с повторением последовательности).
2. Если <подстрока> не указана, то по умолчанию <строка> дополняется пробелами.
3. Если <длина> меньше длины <строки>, то исходная <строка> усекается до заданной <длины>.
4. Если длина <подстроки> больше чем указанная <длина>, то <строка> дополняется частью <подстроки>.
Возвращаемое значение
<Строка>, дополненная слева указанными последовательностями символов. Длина <строки>- максимум из исходной длины <строки> и <длины>.*/
result = substring(:str from 1 for :count_);
while (char_length(:result) < :count_) do
result = :substr || :result;
suspend;
end
-->Как автор умудрился получить точки в качестве разделителя - загадка.
Действительно неправильно написал сосредоточив внимание на порядке вывода, на самом деле тире (-).
Всем спасибо, понравился вариант Slavik-а так-как нолики с меня потом потребовали конечные пользователи - мол не стандартная дата у тебя в программе.
сам я сделал так:
но его вариант лучше.
Действительно неправильно написал сосредоточив внимание на порядке вывода, на самом деле тире (-).
Всем спасибо, понравился вариант Slavik-а так-как нолики с меня потом потребовали конечные пользователи - мол не стандартная дата у тебя в программе.
сам я сделал так:
Код: Выделить всё
CREATE PROCEDURE SP_CORRECT_DATE(
A_DATE DATE)
RETURNS (
XDATE VARCHAR(10))
AS
declare variable V_DAY varchar(2);
declare variable V_MONTH varchar(2);
declare variable V_NUM integer;
begin
V_NUM = EXTRACT(DAY from :A_DATE);
if (:V_NUM < 10) then
begin
V_DAY = '0' || :V_NUM;
end
else
begin
V_DAY = :V_NUM;
end
V_NUM = EXTRACT(MONTH from :A_DATE);
if (:V_NUM < 10) then
begin
V_MONTH = '0' || :V_NUM;
end
else
begin
V_MONTH = :V_NUM;
end
XDATE = V_DAY || '.' || V_MONTH || '.' || EXTRACT(YEAR from :A_DATE);
suspend;
end