Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 129
1

Формат даты в ms sql server

30.06.2017, 10:04. Показов 8986. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста на одном сервере запрос:
SQL
1
UPDATE mgsk.dbo.SensorPlaces SET instDate ='2017-06-30' WHERE sensorPlaceID = '12'
Обновляет дату в определенном поле.

А на другом сервере такой же запрос вызывает ошибку:
Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона.

Я так понимаю ему не нравится формат даты вида "2017-06-30" и ему нужно "2017/30/06" , но писать программу для каждого из серверов неудобно, возможно ли как-то сменить формат представления даты на сервере?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2017, 10:04
Ответы с готовыми решениями:

Формат даты ms sql server
Здравствуйте ребята . Мне интересно как изменить формат даты на MS SQL сервере ? Мне надо что...

Изменить формат даты sql express 2014
Приветствую. Когда пишу insertы на боевых серваках формат даты "yyyy-mm-dd", а когда пишу на...

Формат даты в MS SQL 7.0
А есть ли способ 'навечно' поменять в сервере формат даты (DATEFORMAT) на dmy? Ведь SET DATEFORMAT,...

Формат даты в MS SQL 7
Есть проблема: MS SQL 7 периодически меняет формат вывода даты с dmy на mdy. Причину отследить не...

8
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.06.2017, 10:27 2
Чтобы не возникало подобных проблем, дату нужно указывать в каком-либо независимом от настроек формате.
Например - '20170630'
0
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 129
30.06.2017, 10:40  [ТС] 3
К сожалению такой формат автоматизированно не получится собрать т.к. например июнь получится просто 6, а не 06, и в итоге получится '2017630', что при запросе дает ошибку:
Conversion failed when converting date and/or time from character string.
Есть ли ещё какие то универсальные форматы даты?
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.06.2017, 11:16 4
Цитата Сообщение от inetcoyote Посмотреть сообщение
К сожалению такой формат автоматизированно не получится собрать т.к. например июнь получится просто 6, а не 06
А в виде '2017-06-30' получилось? И в чем тогда разница?
Цитата Сообщение от inetcoyote Посмотреть сообщение
Есть ли ещё какие то универсальные форматы даты?
'2017-06-30T00:00:00'
{d '2017-06-30'}
'2017-06-30' - если тип столбца(переменной) date или datetime2
0
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 129
30.06.2017, 11:27  [ТС] 5
автоматизированно получилось "2017-6-30" и такой формат 1 сервер принял, а другой требует "2017/6/30" поэтому и думал где найти универсальный.
действительно формат столбца datatime2 на обоих серверах, но 1 сервер принимает только через "2017-6-30", а другой "2017/6/30"
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
30.06.2017, 12:42 6
Цитата Сообщение от inetcoyote Посмотреть сообщение
1 сервер принимает только через "2017-6-30", а другой "2017/6/30"
Дата - это NLS-зависимая вещь. Поэтому она воспринимается в зависимости от настроек сервера и отдельной сессии.
А писать программы, которые зависят от настроек - это дурной тон. В Oracle есть функция to_date, которая позволяет явно указать формат, в котором находится тестовый литерал, обозначающий дату. Наверняка в MS SQL есть что-то аналогичное.

NLS - National Language Setting
0
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 129
30.06.2017, 12:44  [ТС] 7
Так я поэтому и спрашивал есть ли какой то универсальный вид даты, чтобы всё равно было какая локализация sql servera стоит
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.06.2017, 13:04 8
Цитата Сообщение от inetcoyote Посмотреть сообщение
Так я поэтому и спрашивал есть ли какой то универсальный вид даты
Вам уже было отвечено.

ЗЫ: Насчет "6" и "06" - Не нужно отождествлять "невозможно" и "не знаю как". Если спросите в подходящей ветке как это сделать - вам помогут.
0
25 / 24 / 7
Регистрация: 22.08.2017
Сообщений: 130
28.08.2017, 17:40 9
июнь получится просто 6, а не 06, и в итоге получится '2017630'
Где "получится"? И почему "получится"? Как и откуда строку формируете?
0
28.08.2017, 17:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2017, 17:40
Помогаю со студенческими работами здесь

Формат даты на SQL-сервере
Не могу решить такую проблему. Есть два SQL-сервера. На одном из них при обнавления поля типа...

Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server?
ВОПРОС: Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS...

SQL Server 2012 Management Studio Express не появляется служба SQL Server
Здравствуйте. Установил SQL Server Management Studio Express 2012 , необходимый для работы одной...

Можно использовать бд созданную в SQL server 2012 на SQL server 2008?
Можно использовать бд созданную в SQL server 2012 на SQL server 2008? если да,то как ее подключить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru