Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Перевод Даты в Строку   Найти похожие ветки 

 
BanderLog   (2004-01-30 11:42) [0]

Привет Мастерам. Подскажите пожалуйста как внутри запроса сформировать строку. Точнее как я знаю, но не знаю как перевести дату в строку в нужном мне виде. По умолчию получается 2004-04-10,а хотелось бы 10.04.2004. (На FB1.5)


 
Deniz   (2004-01-30 11:57) [1]

Для FB1.5:
select extract(day from DateField) || "." ||
extract(month from DateField) || "." ||
extract(year from DateField)
from Table
но есть некоторые нюансы


 
BanderLog   (2004-01-30 12:02) [2]

Пасибы, но это экстренный вариант (хотя про него совсем забыл :(). Хотелось бы на счёт нюансов чуток поподробнее, а то сегодня часа 2 потерял пока с Case"ом разобрался. :(


 
ermserg   (2004-01-30 12:20) [3]

Formatting dates in SQL Server as MM/DD/YYYY:

SELECT CONVERT( VARCHAR(20), yourdatecol, 101 )

For any other formats, replace 101 by:

Without century (yy) With century (yyyy)
Standard
Input/Output**
- 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM)
1 101 USA mm/dd/yy
2 102 ANSI yy.mm.dd
3 103 British/French dd/mm/yy
4 104 German dd.mm.yy
5 105 Italian dd-mm-yy
6 106 - dd mon yy
7 107 - Mon dd, yy
8 108 - hh:mm:ss
- 9 or 109 (*) Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 USA mm-dd-yy
11 111 JAPAN yy/mm/dd
12 112 ISO yymmdd
- 13 or 113 (*) Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 or 120 (*) ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
- 21 or 121 (*) ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(no spaces)
- 130* Kuwaiti dd mon yyyy hh:mi:ss:mmmAM
- 131* Kuwaiti dd/mm/yy hh:mi:ss:mmmAM


 
Deniz   (2004-01-30 12:31) [4]

> Хотелось бы на счёт нюансов чуток поподробнее
При DateField is null у меня extract ругается :( да и сторка для твоего примера "2004-04-10" будет "10.4.2004" тоже не есть гуд :(
UDF спасет отца русской демократии на 100%


 
BanderLog   (2004-01-30 12:32) [5]

Что то в FB я не видел такой функции. Да и в IB тоже. :(
В общем нет такой. :(


 
BanderLog   (2004-01-30 12:36) [6]

2Deniz: В смысле UDF спасёт, есть готовая где-то? (с 4 вместо 04 уже накололся :) а формат задан жёстко). Что-то не очень хоца самому писать сию функцию скорее всего состоящую в итоге из одного DateTimeToStr :).


 
Deniz   (2004-01-30 13:16) [7]

> BanderLog © (30.01.04 12:32) [5]
> Что то в FB я не видел такой функции. Да и в IB тоже. :(
> В общем нет такой. :(


Скорее всего ermserg © (30.01.04 12:20) [3] думал о своем(MSSQL), когда писал сиё творение!

> BanderLog © (30.01.04 12:36) [6]
> -то не очень хоца самому писать сию функцию скорее всего состоящую в итоге из одного DateTimeToStr :).


Скорее всего есть она где-то. А вот с "4" вместо "04", в стандарт поставки FB входит ib_udf.dll там есть lpad

/*****************************************
*
* l p a d
*
*****************************************
*
* Functional description:
* Appends the given character to beginning
* of the input string until length of the result
* string becomes equal to the given number.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION lpad
CSTRING(80), INTEGER, CSTRING(1)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT "IB_UDF_lpad" MODULE_NAME "ib_udf";
Ну можно в ХП это все оформить, тогда все получится :)
Вот только вопрос, зачем это так "жестко" надо? Может можно на клиенте отрегулировать?


 
BanderLog   (2004-02-02 06:47) [8]

>Скорее всего ermserg © (30.01.04 12:20) [3] думал о своем(MSSQL), когда писал сиё творение!
Скорее всего :)

За LPad спасибы, то что надо, а вот с клиентом поподробнее. Я то думал что при конверте FB будет брать настройки формата даты из винды, но увы, видать не берёт. Может и можно настроить представление для сервера, но где?


 
Deniz   (2004-02-02 08:50) [9]

> BanderLog © (02.02.04 06:47) [8]
>а вот с клиентом поподробнее

Все дело в волшебных пузырьках :))
Что бы выбрать информацию из БД(причем любой) нужно написать маленькую программу, которая называется клиентом и делает примерно сл-щее:
1. Подключается к БД.
2. Запрашивает данные.
3. Получает запрошенные данные
4. Показывает их пользователю.
5. Обрабатывает данные.
...
N. Отключается от БД.
Так вот в пункте 4 можно переформатировать вывод ЛЮБОГО поля!
Для примера в программе-клиенте:

Query1.SQL.Text:="select * from MyTable";
Query1.Open;
...
for i:=0 to Query1.FieldCount-1 do begin
if (Query1.Fields[i] is TDateField) then
begin
(Query1.Fields[i] as TDateField).DisplayFormat:="dd/mm/yyyy, dddd";
(Query1.Fields[i] as TDateField).DisplayWidth:=30;
end;
end;

Все датовые поля будут отображаться примерно так:
06.02.2004, пятница


 
BanderLog   (2004-02-03 07:17) [10]

Я конечно балбес но не настолько. :)
Весь прикол в том, что запрос выполняется на сервере и сам внутри себя переводит дату в строку, так что к клиенту это не имеет никакого отношения, потому как к нему попадает уже сформированния строка. :)
Я думал что сервер будет брать виндовые настройки формата даты для конверта, ан нет, что то свое. Мож в нём где то настроить можно?
PS: Ну в общем то я сделал все уже через LPad, но для общего обращования хотелось бы разобраться получше. %)
Всем пасибы за терпение. :о)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.025 c
1-79961
jeka_t
2004-02-13 18:06
2004.02.25
Как переименовать файл используя Делфи?


7-80325
DelphiNew
2003-12-02 11:40
2004.02.25
Проблема приёма данных с СОМ порта


1-79960
@G
2004-02-13 18:33
2004.02.25
Дата и Время


3-79562
Alexei
2004-01-29 13:18
2004.02.25
Проблема с передачей данных в хранимую процедуру


1-79860
кондратий
2004-02-10 17:07
2004.02.25
Delphi / DLL / MDI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский