1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 129
|
||||||
1 | ||||||
Формат даты в ms sql server30.06.2017, 10:04. Показов 8986. Ответов 8
Метки нет (Все метки)
Подскажите пожалуйста на одном сервере запрос:
А на другом сервере такой же запрос вызывает ошибку: Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона. Я так понимаю ему не нравится формат даты вида "2017-06-30" и ему нужно "2017/30/06" , но писать программу для каждого из серверов неудобно, возможно ли как-то сменить формат представления даты на сервере?
0
|
30.06.2017, 10:04 | |
Ответы с готовыми решениями:
8
Формат даты ms sql server Изменить формат даты sql express 2014 Формат даты в MS SQL 7.0 Формат даты в MS SQL 7 |
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 |
А в виде '2017-06-30' получилось? И в чем тогда разница?
'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 |
Дата - это 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 |
Вам уже было отвечено.
ЗЫ: Насчет "6" и "06" - Не нужно отождествлять "невозможно" и "не знаю как". Если спросите в подходящей ветке как это сделать - вам помогут.
0
|
25 / 24 / 7
Регистрация: 22.08.2017
Сообщений: 130
|
|
28.08.2017, 17:40 | 9 |
0
|
28.08.2017, 17:40 | |
28.08.2017, 17:40 | |
Помогаю со студенческими работами здесь
9
Формат даты на SQL-сервере Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server? SQL Server 2012 Management Studio Express не появляется служба SQL Server Можно использовать бд созданную в SQL server 2012 на SQL server 2008? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |