Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 03:50
Оценка:
Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL


Заранее спасибо
Re: Конфликт стандартов
От: wildwind Россия  
Дата: 27.04.05 06:35
Оценка: :)
Здравствуйте, Sergey1986, Вы писали:

S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в


Что такое SQL мы не понимаем...
Re: Конфликт стандартов
От: Козьма Прутков Россия  
Дата: 27.04.05 06:50
Оценка:
> Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL

Ну, насчет настройки виндов не знаю, но почему бы не настроить SQL отдельно так, как тебе надо? Все в BOL:
1) Accessing and Changing Relational Data, Numeric Date Format
2) Administering SQL Server, default language Option
Posted via RSDN NNTP Server 1.9
Да хранит вас господь в сухом прохладном месте...
Re: Конфликт стандартов
От: Merle Австрия http://rsdn.ru
Дата: 27.04.05 07:07
Оценка:
Здравствуйте, Sergey1986, Вы писали:

S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты <...>

Чтобы никогда не было проблем со стандартами надо использовать параметризованные запросы.
Чтобы ответить подробнее, неплохо было бы узнать, что за СУБД и какой провайдер при работе с ней используется.
... << RSDN@Home 1.1.4 beta 6 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re: Конфликт стандартов
От: Softwarer http://softwarer.ru
Дата: 27.04.05 07:16
Оценка: +4
Здравствуйте, Sergey1986, Вы писали:

S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows


Это замечательный путь обеспечить себе, своим пользователям и своим последователям вечный геморрой. Следом пойдут приказы "всем придерживаться одних и тех же настроек" (поскольку виндовс у каждого, а "SQL" один на всех), в результате чего перестанет работать программа, написанная другими такими же разработчиками под другие региональные настройки и активно используемая в отделе "Ч".

Любая нормальная БД умеет принять дату "в формате даты", а не "в формате строки, построенной в соответствии с региональными настройками". И вернуть ее в том же формате. Никаких конфликтов при этом нет и не может быть. Конфликты идут от.... гхм, идиотского кода вида

SQL += "where date = " + Edit1.Text ;
Re: Конфликт стандартов
От: d_f Россия  
Дата: 27.04.05 12:02
Оценка:
Здравствуйте, Sergey1986, Вы писали:

S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL


Какой сервер, MSSQL 2000?
Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 18:27
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, Sergey1986, Вы писали:


S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты <...>

M>Чтобы ответить подробнее, неплохо было бы узнать, что за СУБД и какой провайдер при работе с ней используется.

СУБД — SQL Server 2000, а программа для обращения к базе данных. а точнее таблице из базы данных написана на языке C# из пакета MS visual Studio.Net подключение к базе данных осуществляется через SQLDataAdapter, SQLConnection
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 18:33
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, Sergey1986, Вы писали:


S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows


S>Любая нормальная БД умеет принять дату "в формате даты", а не "в формате строки, построенной в соответствии с региональными настройками". И вернуть ее в том же формате. Никаких конфликтов при этом нет и не может быть. Конфликты идут от.... гхм, идиотского кода вида


S>
SQL += "where date = " + Edit1.Text ;


У меня в программе которая обращается к базе данных имеется такой контрол который передает формат DateTime и в нем введена дата 9.04.05 т.е. 9 апреля 2005 года, а в SQL это передается как 04.09.05 т.е. 4 сентября 2005 года, но если я ставлю в региональных стандартах Винды стандарт отображения даты из 9 апреля 2005г. в апрель 9 2005г. все нормально читается и записывается
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 18:38
Оценка:
Здравствуйте, Козьма Прутков, Вы писали:

>> Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL


КП>Ну, насчет настройки виндов не знаю, но почему бы не настроить SQL отдельно так, как тебе надо? Все в BOL:

КП>1) Accessing and Changing Relational Data, Numeric Date Format
КП>2) Administering SQL Server, default language Option

Что такое BOL? Books OnLine?
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 18:38
Оценка:
Здравствуйте, d_f, Вы писали:

d_f>Здравствуйте, Sergey1986, Вы писали:


S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL


d_f>Какой сервер, MSSQL 2000?

d_f>Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,


Увы но почему то не получается
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 27.04.05 18:45
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Sergey1986, Вы писали:


S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в


W>Что такое SQL мы не понимаем...


имеется в виду СУБД SQL Server
Re[3]: Конфликт стандартов
От: GarryIV  
Дата: 27.04.05 18:54
Оценка:
Hello, Sergey1986!

S>> Любая нормальная БД умеет принять дату "в формате даты", а не "в

S>> формате строки, построенной в соответствии с региональными
S>> настройками". И вернуть ее в том же формате. Никаких конфликтов при
S>> этом нет и не может быть. Конфликты идут от.... гхм, идиотского кода
S>> вида

S>>
SQL += "where date = " + Edit1.Text ;


+1

S> У меня в программе которая обращается к базе данных имеется такой

S> контрол который передает формат DateTime и в нем введена дата 9.04.05
S> т.е. 9 апреля 2005 года, а в SQL это передается как 04.09.05 т.е. 4
S> сентября 2005 года, но если я ставлю в региональных стандартах Винды
S> стандарт отображения даты из 9 апреля 2005г. в апрель 9 2005г. все
S> нормально читается и записывается

Тебе ж говорять передавай параметром запроса System.DateTime а не конкатенацией строк занимайся. Забудь про стоковое представление даты.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[3]: Конфликт стандартов
От: d_f Россия  
Дата: 27.04.05 19:58
Оценка:
Здравствуйте, Sergey1986, Вы писали:

d_f>>Какой сервер, MSSQL 2000?

d_f>>Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,


S>Увы но почему то не получается


А что Вы делаете с передаваемой строкой? Сама по себе она ещё не дата. Нужен CONVERT или CAST.

SELECT CAST('19991226' AS smalldatetime)


А вообще, в BOL действительно всё есть, см., например, Unseparated String Format.
Передавать же дату в ХП через ADO.NET действительно удобнее, используя SqlParameter (см. на этот раз MSDN)
Re[3]: Конфликт стандартов
От: B0rG  
Дата: 27.04.05 20:10
Оценка:
Здравствуйте, Sergey1986, Вы писали:

S>Что такое BOL? Books OnLine?


Да.
Советую выучить наизусть, т.к. это сочетание здесь часто встречается
Re: Конфликт стандартов
От: Chupa_Kabra  
Дата: 28.04.05 01:53
Оценка:
Здравствуйте, Sergey1986, Вы писали:

S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е.


S>26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL

Не может быть 26го месяца

This example uses different date formats to handle date strings in different formats.

SET DATEFORMAT mdy
GO
DECLARE @datevar datetime
SET @datevar = '12/31/98'
SELECT @datevar
GO

SET DATEFORMAT ydm
GO
DECLARE @datevar datetime
SET @datevar = '98/31/12'
SELECT @datevar
GO

SET DATEFORMAT ymd
GO
DECLARE @datevar datetime
SET @datevar = '98/12/31'
SELECT @datevar
GO

еще на это влияет set language
и можно конвертировать в текст определенного формата с помощью команды convert
Если вы получаете на клиента дату в формате datetime/smalldatetime, то и форматируйте ее в клиенте, а все, что вы видите в QU — это отображение и не нужно путать с хранением.
Все хотят хорошо провести время, но время не проведешь !
Re[4]: Конфликт стандартов
От: Sergey1986  
Дата: 28.04.05 19:26
Оценка:
Здравствуйте, d_f, Вы писали:

d_f>Здравствуйте, Sergey1986, Вы писали:


d_f>>>Какой сервер, MSSQL 2000?

d_f>>>Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,


S>>Увы но почему то не получается


d_f>А что Вы делаете с передаваемой строкой? Сама по себе она ещё не дата. Нужен CONVERT или CAST.


d_f>
d_f>SELECT CAST('19991226' AS smalldatetime)
d_f>


У меня передаются данные в формате DateTime только по какой-то причине DateTime в С# не совпадает с DateTime в SQL
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 28.04.05 19:49
Оценка:
Здравствуйте, Chupa_Kabra, Вы писали:

C_K>Не может быть 26го месяца


C_K>[q]

C_K>This example uses different date formats to handle date strings in different formats.

C_K>SET DATEFORMAT mdy

C_K>GO
C_K>DECLARE @datevar datetime
C_K>SET @datevar = '12/31/98'
C_K>SELECT @datevar
C_K>GO

C_K>еще на это влияет set language

C_K>и можно конвертировать в текст определенного формата с помощью команды convert
C_K>Если вы получаете на клиента дату в формате datetime/smalldatetime, то и форматируйте ее в клиенте, а все, что вы видите в QU — это отображение и не нужно путать с хранением.

Мне нужно вставить данные даты в таблицу для хранения в ней, а у меня в конкретный столбец не вставляется переменная @datevar
Re[4]: Конфликт стандартов
От: Sergey1986  
Дата: 28.04.05 20:06
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Тебе ж говорять передавай параметром запроса System.DateTime а не конкатенацией строк занимайся. Забудь про стоковое представление даты.


Свойство Value объекта DateTimePicker имеет формат DateTime и предаю я в базу данных значение свойства Value объекта DateTimePicker сие означает что я передаю значение формата DateTime, т.е. то что нужно, но вот тут возникает исключение которое звучит след. образом:
The conversion of a char data type to a datetime data type resulted in at out-of-range datetime value. The statement has been terminated
Re[4]: Конфликт стандартов
От: Sergey1986  
Дата: 28.04.05 20:08
Оценка:
Здравствуйте, B0rG, Вы писали:

BG>Здравствуйте, Sergey1986, Вы писали:


S>>Что такое BOL? Books OnLine?


BG>Да.

BG>Советую выучить наизусть, т.к. это сочетание здесь часто встречается

Что означает следующее исключение, оно возникает когда я передаю данные о дате? А вот и исключение
The conversion of a char data type to a datetime data type resulted in at out-of-range datetime value. The statement has been terminated
Re[2]: Конфликт стандартов
От: Sergey1986  
Дата: 28.04.05 20:09
Оценка:
Здравствуйте, Chupa_Kabra, Вы писали:

C_K>Не может быть 26го месяца


C_K>SET DATEFORMAT mdy

C_K>GO
C_K>DECLARE @datevar datetime
C_K>SET @datevar = '12/31/98'
C_K>SELECT @datevar
C_K>GO

C_K>еще на это влияет set language

C_K>и можно конвертировать в текст определенного формата с помощью команды convert
C_K>Если вы получаете на клиента дату в формате datetime/smalldatetime, то и форматируйте ее в клиенте, а все, что вы видите в QU — это отображение и не нужно путать с хранением.

Что означает следующее исключение, оно возникает когда я передаю данные о дате? А вот и исключение
The conversion of a char data type to a datetime data type resulted in at out-of-range datetime value. The statement has been terminated
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.