Здравствуйте, Sergey1986, Вы писали:
S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows
Это замечательный путь обеспечить себе, своим пользователям и своим последователям вечный геморрой. Следом пойдут приказы "всем придерживаться одних и тех же настроек" (поскольку виндовс у каждого, а "SQL" один на всех), в результате чего перестанет работать программа, написанная другими такими же разработчиками под другие региональные настройки и активно используемая в отделе "Ч".
Любая нормальная БД умеет принять дату "в формате даты", а не "в формате строки, построенной в соответствии с региональными настройками". И вернуть ее в том же формате. Никаких конфликтов при этом нет и не может быть. Конфликты идут от.... гхм, идиотского кода вида
Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL
> Помогите пожалуйста сделать так чтобы 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
Здравствуйте, Sergey1986, Вы писали:
S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты <...>
Чтобы никогда не было проблем со стандартами надо использовать параметризованные запросы.
Чтобы ответить подробнее, неплохо было бы узнать, что за СУБД и какой провайдер при работе с ней используется.
Здравствуйте, Sergey1986, Вы писали:
S>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в Windows потому что у меня формат даты при обращении к базе данных не совпадает, т.е. когда мне из программы нужно вставить дату 26.04.2005 т.е. 26 апреля 2005г у меня в SQL распознает как 4-число 26-месяца 2005г. Потому что региональные стандарты Windows не совпадают со стандартами SQL
Какой сервер, MSSQL 2000?
Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,
Здравствуйте, Merle, Вы писали:
M>Здравствуйте, Sergey1986, Вы писали:
S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты <...> M>Чтобы ответить подробнее, неплохо было бы узнать, что за СУБД и какой провайдер при работе с ней используется.
СУБД — SQL Server 2000, а программа для обращения к базе данных. а точнее таблице из базы данных написана на языке C# из пакета MS visual Studio.Net подключение к базе данных осуществляется через SQLDataAdapter, SQLConnection
Здравствуйте, 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г. все нормально читается и записывается
Здравствуйте, Козьма Прутков, Вы писали:
>> Помогите пожалуйста сделать так чтобы 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
Здравствуйте, 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' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Sergey1986, Вы писали:
S>>Помогите пожалуйста сделать так чтобы SQL использовал региональные стандыарты которые установалены в
W>Что такое SQL мы не понимаем...
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 а не конкатенацией строк занимайся. Забудь про стоковое представление даты.
Здравствуйте, Sergey1986, Вы писали:
d_f>>Какой сервер, MSSQL 2000? d_f>>Задавайте дату в виде 'YYYYMMDD' (без разделителей), и она будет верно интерпретироваться сервером при любых региональных настройках,
S>Увы но почему то не получается
А что Вы делаете с передаваемой строкой? Сама по себе она ещё не дата. Нужен CONVERT или CAST.
SELECT CAST('19991226' AS smalldatetime)
А вообще, в BOL действительно всё есть, см., например, Unseparated String Format.
Передавать же дату в ХП через ADO.NET действительно удобнее, используя SqlParameter (см. на этот раз MSDN)
Здравствуйте, 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 — это отображение и не нужно путать с хранением.
Все хотят хорошо провести время, но время не проведешь !
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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
Что означает следующее исключение, оно возникает когда я передаю данные о дате? А вот и исключение
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
> Что означает следующее исключение, оно возникает когда я передаю > данные о дате? А вот и исключение > > 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 >
Да, это именно то, что сервер не смог переварить строку в datetime/smallsatetime,
Если у вас жестко известен формат даты, то вы используете convert, в котором
можно указать, в каком формате у вас передаются данные, а потом уже полученое
значение вставлять в таблицу
Posted via RSDN NNTP Server 1.9
Все хотят хорошо провести время, но время не проведешь !