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

Вниз

Конвертация даты в строку на SQL сервере   Найти похожие ветки 

 
Котяра   (2003-07-01 14:01) [0]

Доброго времени суток, All!
Такая проблема. Есть таблица, где есть несколько поле с датами в виде целого числа наоборот, то есть:
20030630 - 30.06.2003 г.
20021228 - 28.12.2002 г.
Причем даты могут быть "пустыми" и "укороченными":
0 - ?
20020000 - 2002 г.
20020500 - 05.2002 г.
Раньше я конвертил это все в обработчике события OnCalcFields проги, база данных была на Paradox. Теперь все это дело потребовалось перенести на MS SQL 6.5 и старый способ жутко тормозит. Есть мысль перенести обработку этих полей и конвертацию из в строки на самом SQL серваке. Только вот как лучше: хранимую процедуру или что еще надо? Я к сожалению в SQL не очень силен.

С уважением Разживин Александр.


 
Семен Сорокин   (2003-07-01 14:10) [1]

посмотри справку по CONVERT


 
stone   (2003-07-01 14:43) [2]


> Есть таблица, где есть несколько поле с датами в виде целого
> числа наоборот, то есть:
> 20030630 - 30.06.2003 г.
> 20021228 - 28.12.2002


Даты типа 20030630 MSSQL воспринимает на ура.


> Причем даты могут быть "пустыми" и "укороченными"


А вот этого следует избегать изначально. К чему создавать себе лишние проблемы?


 
LordOfSilence   (2003-07-01 15:05) [3]

Что-то типа этого:
CAST(SUBSTRING(DATE_TIME_IDDOC, 1, 8) AS datetime)
А вот пустые и укороченные, согласен, это зря.
Приведи все свое хозяйство к общему знаменателю.


 
Котяра   (2003-07-01 17:40) [4]

> А вот этого следует избегать изначально. К чему создавать себе лишние проблемы?

Из-за этого и мучаюсь... а то бы проще CONVERTом - я уже смотрел :)


 
Котяра   (2003-07-01 17:43) [5]

Вообще-то я хотел узнать, как лучше на серваке на лету выполнять любые преобразования данных для показа юзверю


 
Johnmen   (2003-07-01 17:56) [6]

>Котяра © (01.07.03 17:43)
>как лучше на серваке на лету выполнять любые преобразования
>данных для показа юзверю

Используя встроенные и пользовательские (если есть возможность) функции.


 
sniknik   (2003-07-01 19:38) [7]

> Даты типа 20030630 MSSQL воспринимает на ура.
если бы они строкой задавались а так как число..

> Используя встроенные и пользовательские ( если есть возможность) функции.

возможностей полно (3 варианта, наверняка можно еще придумать)


select Round(20030630/10000, 0, 1) AS Year,
Round((20030630 % 10000)/100, 0, 1) AS Month,
20030630 % 100 AS Day

SELECT DATEADD(Year, Round(20030630/10000, 0, 1)-1900,
DATEADD(Month, Round((20030630 % 10000)/100, 0, 1)-1,
DATEADD(Day, 20030630 % 100-1, 0))) AS Date

SELECT CAST(CAST(20030630 AS varchar(8)) AS DateTime) AS Date


 
ЮЮ   (2003-07-02 02:37) [8]

>Теперь все это дело потребовалось перенести на MS SQL 6.5 и старый способ жутко тормозит

Cкорость обработчика OnCalcFields никак не зависит от используемой БД, а вот продолжать использовать TTable на MS SQL - это тормоза


 
Котяра   (2003-07-02 15:34) [9]

> а вот продолжать использовать TTable на MS SQL - это тормоза

Это я уже давно понял :) Но даже с TQuery все одно работает медленнее. Дело в том, что кроме преобразования дат у меня там вычисляются значения еще нескольких полей. Вот и тормозит. Именно поэтому я и хочу перенести хотя бы часть обработки на сервер



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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
14-78122
_0$a_
2003-07-06 00:38
2003.07.24
Набираю ГРУППУ програмеров


3-77776
tERRORist
2003-07-02 12:26
2003.07.24
Двойные параметры ADO


7-78162
DVM
2003-05-15 13:32
2003.07.24
Как вызвать диалог


14-78039
Skier
2003-07-07 09:23
2003.07.24
---|Ветка была без названия|---


3-77794
BoxTer
2003-07-02 12:42
2003.07.24
ADO запрос из таблиц,нах. в разных местах





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский