Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает: SELECT cast(convert(char(10),getdate(),102)as datetime) в 2008R2  [new]
f50
Member

Откуда: Россия
Сообщений: 456
Здравствуйте!
Подскажите правильный синтаксис для MSSQL 2008, строки:
SELECT cast(convert(char(10),getdate(),102)as datetime)
и почему в 2000-2005 этот код работает, а в 2008 (SQL Server 10.50.2500) отказывается работать, выдаёт ошибку:
автор
Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона.

Заранее благодарю!
25 сен 11, 21:40    [11333712]     Ответить | Цитировать Сообщить модератору
 Re: Не работает: SELECT cast(convert(char(10),getdate(),102)as datetime) в 2008R2  [new]
iljy
Member

Откуда:
Сообщений: 8711
f50,

потому что у серверов разные региональные настройки. Если уж решили работать с датой как со строкой - так используйте языковонезависимые форматы, или хотя бы явно их указывайте.
25 сен 11, 21:48    [11333752]     Ответить | Цитировать Сообщить модератору
 Re: Не работает: SELECT cast(convert(char(10),getdate(),102)as datetime) в 2008R2  [new]
f50
Member

Откуда: Россия
Сообщений: 456
Точно, так и есть, дошло,
EXEC sp_defaultlanguage 'fff', 'us_english'
и всё ок. Блин, опять тему новую нафлудил :((
25 сен 11, 22:15    [11333870]     Ответить | Цитировать Сообщить модератору
 Re: Не работает: SELECT cast(convert(char(10),getdate(),102)as datetime) в 2008R2  [new]
iljy
Member

Откуда:
Сообщений: 8711
f50,

ну откуда эта тяга к разбразыванию граблей? Почему явно формат не указать?
select CONVERT(datetime, convert(char(10),getdate(),102),102)
А еще лучше работать с датой как с датой, а не через строки.
select DATEADD(d,DATEDIFF(d,0,getdate()),0)
25 сен 11, 23:04    [11334027]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить