Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
В чем у меня может быть проблемма?
мне нужен формат ДД.ММ.ГГГГ. Я его устанавливаю так:
Set DateFormat dmy. Пишет, что все "ОК". Но данные выводит в старом формате. И при вставке записи ругается: Невозможно преобразовать типы данных.
29 ноя 04, 11:56    [1143150]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
ruslrain
Member

Откуда:
Сообщений: 114
скорее всего это региональные установки. Gjghj,eq pfvtybnm "." на "/"
29 ноя 04, 11:59    [1143174]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
zass
Member

Откуда: Minsk
Сообщений: 1043
Посмотри команду CONVERT
29 ноя 04, 12:01    [1143194]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Set DateFormat dmy. Пишет, что все "ОК". Но данные выводит в старом формате.


Этой командой вы устанавливаете формат даты тока для текущей сессии. И, если Вы работаете через одно единственное соединение с бд, то ошибок быть не должно. Но, скорее всего, у Вас окрывается более чем 1 соединение с базой - отсюда и глюки.

Попробуйте враз и навсегда решить проблему, установив для логинов язык russian с помощью sp_defaultlanguage.
29 ноя 04, 12:19    [1143283]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
А можно более подробно о решении проблеммы с помощью процедуры sp_defaultlanguage. Я всего неделю работаю с MS SQL.
29 ноя 04, 12:33    [1143357]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Опишу подробнее.
После коннекта я устанавливаю формат.
Затем пытаюсь сделать вставку записи.
29 ноя 04, 12:53    [1143454]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Может кто-нибудь сказать - Почему не работает команда "SET DATEFORMAT"?
29 ноя 04, 13:10    [1143553]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Glory
Member

Откуда:
Сообщений: 104751
WellSlava
Может кто-нибудь сказать - Почему не работает команда "SET DATEFORMAT"?

А почему вы уверены что дело именно в DATEFORMAT ?
29 ноя 04, 13:14    [1143586]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Я ни в чем не уверен. Может дело и не в "SET DATEFORMAT". Но оно все равно не работает. А в чем может быть проблема?
29 ноя 04, 13:19    [1143611]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
WellSlava
А можно более подробно о решении проблеммы с помощью процедуры sp_defaultlanguage. Я всего неделю работаю с MS SQL.


и что, что неделю. BOLом не научились пользоваться?!

This example sets the default language for login Claire to French.

EXEC sp_defaultlanguage 'Claire', 'french'


автор
Но оно все равно не работает.


Очень полная информация о происходщем...
29 ноя 04, 13:21    [1143623]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Glory
Member

Откуда:
Сообщений: 104751
Но оно все равно не работает. А в чем может быть проблема?
Вот этого "оно" вы как раз до сих пор и не показали.
Не говоря уже про сообщение об ошибке.
Несмотря на прикрепленный на самом видном месте топика об рекомендациях по оформлению сообщений. Поэтому уже 1,5 часа вы и не можете решить проблему
29 ноя 04, 13:23    [1143638]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Так, а клиент на чем? Как запрос с SET на сервер отправляете? Профайлером посмотрите, у вас это SET часом в sp_executesql не заворачивается?
29 ноя 04, 13:23    [1143639]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Пишу очень подробно. Сервер MS SQL 2000. Клиент написан на Delphi 7.
Таблица
create table Service (ID_Service integer identity (1,1) not null primary key,
Name_Service varchar(25) not null,
Begin_Date datetime not null)
После коннекта выполняется следующее:
qModify.Close;
qModify.SQL.Text := 'SET DATEFORMAT dmy';
qModify.ExecSQL;
Затем идет вставка записи:
qModify.Close;
qModify.SQL.Text := 'Insert Into Service (Name_Service, Begin_Date) Values (:Name_Service, :Begin_Date)';
qModify.ParamByName('Name_Service').AsString := enterNameServEdt.Text;
qModify.ParamByName('Begin_Date').AsDateTime := beginDateDEdt.Date;
dmTest.qModify.ExecSQL;
Ошибка:
Syntax error converting datetimefrom character string.
29 ноя 04, 14:04    [1143864]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
И что на сервер уходит? профайлером смотрели?
29 ноя 04, 14:15    [1143924]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
попробуйте так
qModify.Close;
qModify.SQL.Text := 'set dateformat dmy Insert Into Service (Name_Service, Begin_Date) Values (:Name_Service, :Begin_Date)';
qModify.ParamByName('Name_Service').AsString := enterNameServEdt.Text;
qModify.ParamByName('Begin_Date').AsDateTime := FormatDateTime('dd.mm.yyyy,beginDateDEdt.DateTime);
dmTest.qModify.ExecSQL;
29 ноя 04, 14:19    [1143938]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
попробуйте так
qModify.Close;
qModify.SQL.Text := 'set dateformat dmy Insert Into Service (Name_Service, Begin_Date) Values (:Name_Service, :Begin_Date)';
qModify.ParamByName('Name_Service').AsString := enterNameServEdt.Text;
qModify.ParamByName('Begin_Date').AsString := FormatDateTime('dd.mm.yyyy,beginDateDEdt.DateTime);
dmTest.qModify.ExecSQL;
29 ноя 04, 14:20    [1143945]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
а вообще лучшее решение через адо работать с датами в формате "yyyymmdd"
а уж как вы будете отображать дату клиенту - вопрос клиента
29 ноя 04, 14:22    [1143952]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Smirnov Anton
попробуйте так
qModify.Close;
qModify.SQL.Text := 'set dateformat dmy Insert Into Service (Name_Service, Begin_Date) Values (:Name_Service, :Begin_Date)';
qModify.ParamByName('Name_Service').AsString := enterNameServEdt.Text;
qModify.ParamByName('Begin_Date').AsDateTime := FormatDateTime('dd.mm.yyyy,beginDateDEdt.DateTime);
dmTest.qModify.ExecSQL;


Я уже делал так: перед Insert задавать формат - все равно выдает ошибку.
29 ноя 04, 14:50    [1144093]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
pkarklin
И что на сервер уходит? профайлером смотрели?


Это как надо посмотреть? Я же писал, что всего неделю как работаю с MS SQL.
29 ноя 04, 14:54    [1144117]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
Glory
Member

Откуда:
Сообщений: 104751
Если ваш входной параметре 'Begin_Date' уже имеет тиа datetime то установка SET DATEFORMAT здесь не поможет. Ибо
"This setting is used only in the interpretation of character strings as they are converted to date values. It has no effect on the display of date values."

Тип datetime и так должен передаватся без всякого форматирования.
Смотрите какая команда уходит от клиента к серверу
29 ноя 04, 14:55    [1144121]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
WellSlava
pkarklin
И что на сервер уходит? профайлером смотрели?


Это как надо посмотреть? Я же писал, что всего неделю как работаю с MS SQL.


Start->Programs->MS SQL Server->Profiler->F1
29 ноя 04, 15:10    [1144179]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Glory
Если ваш входной параметре 'Begin_Date' уже имеет тиа datetime то установка SET DATEFORMAT здесь не поможет. Ибо
"This setting is used only in the interpretation of character strings as they are converted to date values. It has no effect on the display of date values."

Тип datetime и так должен передаватся без всякого форматирования.
Смотрите какая команда уходит от клиента к серверу


Вы правы тип поля DateTime.
Вот что уходит на сервер - '20040101 00:00:00:000'
29 ноя 04, 15:20    [1144225]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
Еще делаю следующую вставку из SQL Query Analyzer - Insert Into Service (Name_Service, Begin_Date) values ('Кваптплата', '20041129 00:00:00:000')
Выдает ту же ошибку.
29 ноя 04, 15:37    [1144296]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
WellSlava
Еще делаю следующую вставку из SQL Query Analyzer - Insert Into Service (Name_Service, Begin_Date) values ('Кваптплата', '20041129 00:00:00:000')
Выдает ту же ошибку.


здесь SET DATEFORMAT dmy не нужен совсем. Ибо вы в ISO формате передаете, а он всегда одинаково трактуется.

DECLARE @Table Table(col1 datetime)
SET DATEFORMAT dmy
INSERT INTO @Table Values('20041129 00:00:00:000')
SET DATEFORMAT mdy
INSERT INTO @Table Values('20041129 00:00:00:000')
SET DATEFORMAT ymd
INSERT INTO @Table Values('20041129 00:00:00:000')
SELECT * FROM @Table

У Вас точно здесь ошибка то? И какая, кстати, в оригинале?
29 ноя 04, 15:46    [1144349]     Ответить | Цитировать Сообщить модератору
 Re: установка формата даты  [new]
WellSlava
Member

Откуда:
Сообщений: 207
pkarklin
WellSlava
Еще делаю следующую вставку из SQL Query Analyzer - Insert Into Service (Name_Service, Begin_Date) values ('Кваптплата', '20041129 00:00:00:000')
Выдает ту же ошибку.


здесь SET DATEFORMAT dmy не нужен совсем. Ибо вы в ISO формате передаете, а он всегда одинаково трактуется.

DECLARE @Table Table(col1 datetime)
SET DATEFORMAT dmy
INSERT INTO @Table Values('20041129 00:00:00:000')
SET DATEFORMAT mdy
INSERT INTO @Table Values('20041129 00:00:00:000')
SET DATEFORMAT ymd
INSERT INTO @Table Values('20041129 00:00:00:000')
SELECT * FROM @Table

У Вас точно здесь ошибка то? И какая, кстати, в оригинале?


Ваш этот скрипт работает.
Вот что выдает:
"General SQL Server error: Check messages from the SQL Server.
Syntax error converting datetime from character string."
29 ноя 04, 16:31    [1144564]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить