Главная страница
    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
3-77722
HardClubber
2003-06-30 16:30
2003.07.24
Что можно использовать?


1-77976
bloodman
2003-07-10 23:14
2003.07.24
Реестр


3-77768
Kati
2003-07-02 10:06
2003.07.24
Все тот же Sql !


1-77974
Прохожий
2003-07-11 10:47
2003.07.24
ListBox


14-78144
you
2003-07-09 12:59
2003.07.24
Ошибка при запуске 1 приложения из другого





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