Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Андрей GR
Member

Откуда: Москва
Сообщений: 242
Коллеги, здравствуйте!

При установленной MSSQL 2012 Express русской версии все работало, а при выполнении запроса на английской версии говорит "The conversion of a varchar data type to a datetime data type resulted in an out-of-range value"

Сам запрос на обновление UPDATE Table1 SET Fld1='18.01.2016 16:48:31' WHERE key_Fld1=2


Где в настройках изменить формат даты?


С наилучшими пожеланиями,
Андрей,
18 янв 16, 22:24    [18698667]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Андрей GR
Member

Откуда: Москва
Сообщений: 242
Сама таблица
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table1](
[key_fld1] [int] NOT NULL,
[Fld1] [datetime] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
18 янв 16, 22:40    [18698757]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Artny
Guest
Андрей GR,

UPDATE Table1 SET Fld1='20160118 16:48:31' WHERE key_Fld1=2
19 янв 16, 04:41    [18699244]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Андрей GR
Member

Откуда: Москва
Сообщений: 242
Artny
Андрей GR,

UPDATE Table1 SET Fld1='20160118 16:48:31' WHERE key_Fld1=2


А где в настройках SQL Server нужно поменять формат даты и времени что бы формат для вставки был, как раньше на русском сервере?
19 янв 16, 09:07    [18699530]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
VAlexey
Member

Откуда:
Сообщений: 130
Андрей GR,
См.
set language english
go
select	s.date_format, s.language  from	sys.dm_exec_sessions s where	s.session_id = @@SPID 
select CAST('18.01.2016 16:48:31'  as datetime)
go
set language russian
go
select	s.date_format, s.language  from	sys.dm_exec_sessions s where	s.session_id = @@SPID 
select CAST('18.01.2016 16:48:31'  as datetime)
go


Формат даты по умолчанию зависит от языка логина. Можно поменять Default Language для логина. В русском SQL Server по умолчанию Default language устанавливается в Russian, в английской - English.
19 янв 16, 10:30    [18699862]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Андрей GR
Member

Откуда: Москва
Сообщений: 242
VAlexey
Андрей GR,
См.
set language english
go
select	s.date_format, s.language  from	sys.dm_exec_sessions s where	s.session_id = @@SPID 
select CAST('18.01.2016 16:48:31'  as datetime)
go
set language russian
go
select	s.date_format, s.language  from	sys.dm_exec_sessions s where	s.session_id = @@SPID 
select CAST('18.01.2016 16:48:31'  as datetime)
go


Формат даты по умолчанию зависит от языка логина. Можно поменять Default Language для логина. В русском SQL Server по умолчанию Default language устанавливается в Russian, в английской - English.


Да, как вариант!
А как установить статически язык, что бы не в каждом запросе на обновление вставлять set language russian, а только во ремя установки SQL Server ?
19 янв 16, 10:57    [18699994]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
o-o
Guest
Андрей GR
А как установить статически язык, что бы не в каждом запросе на обновление вставлять set language russian, а только во ремя установки SQL Server ?

не языковые настройки менять надо, а свой код.
передавайте дату в языконезависимом виде.
но если повышенная упертость, то своему логину дефолтный язык выставьте русский
19 янв 16, 11:00    [18700014]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4974
Андрей GR

Где в настройках изменить формат даты?



SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result;


https://msdn.microsoft.com/en-us/library/hh213316.aspx
19 янв 16, 14:16    [18701355]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
Андрей GR
Member

Откуда: Москва
Сообщений: 242
a_voronin,

А если так попробовать?

GO


SET LANGUAGE russian
GO

exec sp_configure 'default language', 21
GO

exec sp_defaultlanguage 'SA', 'russian'
GO
19 янв 16, 17:40    [18702641]     Ответить | Цитировать Сообщить модератору
 Re: Формат даты для вставки на русском и английском MSSQL 2012 Express  [new]
o-o
Guest
Андрей GR
exec sp_defaultlanguage 'SA', 'russian'
[/src]

а это типа не то же самое, что
o-o
но если повышенная упертость, то своему логину дефолтный язык выставьте русский

хотя не в виде ALTER LOGIN нафталином отдает:
BOL -- sp_defaultlanguage
This feature will be removed in a future version of Microsoft SQL Server.
Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
19 янв 16, 17:46    [18702675]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить