powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок отображения D,M,Y в дате
25 сообщений из 39, страница 1 из 2
Порядок отображения D,M,Y в дате
    #37864425
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользуюсь MS SQL Server 2008R2 DeveloperEd.
Итак есть 2 базы данных.

Для одной определен Collation (DB_1)

Код: sql
1.
Ukrainian_CI_AS



Для другой Collation (DB_2)

Код: sql
1.
Cyrillic_Generel_CI_AS



В обеих есть одинаковая табличка, с одним полем типа (tbl_time)

Код: sql
1.
datetime



В которое записываются даты в формате ДД.ММ.ГГГГ
Например передаем дату: 01.06.2012

Тогда в таблице DB_1.dbo.tbl_time

Код: sql
1.
2012-06-01 00:00:00.000



В таблице DB_2.dbo.tbl_time

Код: sql
1.
2012-01-06 00:00:00.000



Соответственно запросы

Код: sql
1.
2.
3.
SELECT DATEPART (mm, DB_1.dbo.tbl_time.time) 

SELECT DATEPART (mm, DB_2.dbo.tbl_time.time) 



Выдают разные резалты - 6 и 1 соответсвенно.
Помогите разобраться.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864426
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864432
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanСоответственно запросы

Код: sql
1.
2.
3.
SELECT DATEPART (mm, DB_1.dbo.tbl_time.time) 

SELECT DATEPART (mm, DB_2.dbo.tbl_time.time) 




Выдают разные резалты - 6 и 1 соответсвенно.
Если оба поля именно типа datetime, то эти запросы выдают одинаковый результат
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864456
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

я читал эту мини статью, но хотел разобраться подробнее что и к чему...
плюс возник вопрос, могу ли я сделать такой апдейт

Код: sql
1.
2.
UPDATE DB_1.dbo.tbl_time
SET DB_1.dbo.tbl_time.time = convert(dateime,DB_1.dbo.tbl_time.time,101)



Потому что мне однозначно нужно перейти к такому отображению даты

И даже если я делаю

Код: sql
1.
SELECT CONVERT(datetime, '20120601', 101) 



Все равно выдает пустой результирующий набор.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864467
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отображением даты занимается клиентское приложение.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864484
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,

Код: sql
1.
2.
 [src]SELECT DATEPART (mm,DB_2.t.time) AS 'Month',t.time from DB_1.dbo.tbl_time t
 ORDER BY t.time



MonthTime601.06.2012

Код: sql
1.
2.
 SELECT DATEPART (mm,DB_2.t.time) AS 'Month',t.time from DB_2.dbo.tbl_time t
 ORDER BY t.time



MonthTime106.01.2012
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864490
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zanderman, у вас содержатся разные значения (1 июня и 6 января), поэтому и разный результат у DATEPART
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864492
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас 2 разные даты. Потому что вы записали в таблицу 2 разные даты.
Потому что вместо параметров используете символьные константы.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864494
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,

Да, но передавалось изначально в оба поля значение 01.06.2012.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864506
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zanderman,

Еще есть такой нюанс для DB_1, где якобы дата отобразилась правильно.
Чтобы ее вытянуть я пишу такой запрос:

Код: plsql
1.
2.
SELECT * FROM DB_1.dbo.time t
WHERE t.time = '06.01.2012'



Хотя в базе дата отображается, как

Код: sql
1.
2012-01-06 00:00:00.000



Потому я совсем запутался.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864510
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanShakill,

Да, но передавалось изначально в оба поля значение 01.06.2012.Ещё раз - 12809820
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864511
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanShakill,

Да, но передавалось изначально в оба поля значение 01.06.2012.

как передавалось? и учтите, что настройки сервера влияют на то, как интерпретируется текстовая запись, если передавали текстом
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864516
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,

даты попадали с помощью выгрузки из 1С в формате ДД.ММ.ГГ
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864541
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanShakill,

даты попадали с помощью выгрузки из 1С в формате ДД.ММ.ГГ

ну либо в одну из баз даты попали неправильно сконвертированные, либо вы думаете что даты должны быть одинаковыми у тех записей, где они на самом деле должны быть разные
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864549
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это отображение на клиенте, с разными настройками
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864561
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Podgoretsky,

Можно подробней, пожалуйста.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864572
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Podgoretsky,

ТС утверждает, что у неких двух записей из двух одинаковых таблиц должна стоять одинаковая дата, и, следовательно, одинаковое значение DATEPART(mm, ..), а оно разное. тут дело не в отображении. либо ТС ошибся в выборе самих записей для сопоставления, либо данные повреждены
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864587
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это в одной странице и данные с одного источника, то конечно у автора где то ошибка при записи данных. Например изменение настроек между записями, или разные запросы
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864601
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,

Именно!
Надеялся, что дело в Collation баз.
Или есть четкие правила отображения и хранения дат...

Ответьте мне на такой вопрос, если мне передали дату 01.06.2012 в поле db_1.tbl_time.time(не важно какое)
то как бы не записалась эта дата в БД, результатом запроса

Код: sql
1.
SELECT DATEPART (mm,t.time) from db_1.tbl_time t



будет 6?
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864605
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanИ даже если я делаю

Код: sql
1.
SELECT CONVERT(datetime, '20120601', 101) 



Все равно выдает пустой результирующий набор.'20120601' - это 112-й формат.
CONVERT необязателен - этот формат сервер умеет конвертировать по-умолчанию.

А вот писать '01.06.2012' - неграмотно, ибо зависит от параметров на сервере.
Надо CONVERT(DATETIME,'01.06.2012',104)
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864609
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanShakill,

Именно!
Надеялся, что дело в Collation баз.
Или есть четкие правила отображения и хранения дат...

Ответьте мне на такой вопрос, если мне передали дату 01.06.2012 в поле db_1.tbl_time.time(не важно какое)
то как бы не записалась эта дата в БД, результатом запроса

Код: sql
1.
SELECT DATEPART (mm,t.time) from db_1.tbl_time t



будет 6?Передали ведь не дату, а строку?
Значит, зависит от интерпретации этой строки.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864619
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

ну учитывая, что у этой строки тип

Код: sql
1.
datetime



То наверное это все таки дата...
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864645
zanderman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapzandermanИ даже если я делаю

Код: sql
1.
SELECT CONVERT(datetime, '20120601', 101) 



Все равно выдает пустой результирующий набор.'20120601' - это 112-й формат.
CONVERT необязателен - этот формат сервер умеет конвертировать по-умолчанию.

А вот писать '01.06.2012' - неграмотно, ибо зависит от параметров на сервере.
Надо CONVERT(DATETIME,'01.06.2012',104)

Конечно! Согласен с Вами.
Я немогу понять одного почему, чтобы получить одну и ту же дату в одном случае
я пишу запрос
Код: sql
1.
CONVERT(DATETIME,'01.06.2012',104)


а в другом
Код: sql
1.
CONVERT(DATETIME,'06.01.2012',104)
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864648
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanЯ немогу понять одного почему, чтобы получить одну и ту же дату в одном случае
я пишу запрос
Код: sql
1.
CONVERT(DATETIME,'01.06.2012',104)


а в другом
Код: sql
1.
CONVERT(DATETIME,'06.01.2012',104)



вы ошибаетесь, в результате этих преобразований получатся разные даты.
...
Рейтинг: 0 / 0
Порядок отображения D,M,Y в дате
    #37864677
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zandermanОтветьте мне на такой вопрос, если мне передали дату 01.06.2012 в поле db_1.tbl_time.time(не важно какое)
то как бы не записалась эта дата в БД, результатом запроса

Код: sql
1.
SELECT DATEPART (mm,t.time) from db_1.tbl_time t


будет 6?

если ваш запрос пытается вставить строку '01.06.2012' в поле datetime, то она будет приведена согласно настройкам сервера к типу datetime или как 1 июня, или как 6 января.
в зависимости от того, какое в итоге значение попало в базу, ваш select datepart(mm, ..) будет возвращать 6 или 1
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок отображения D,M,Y в дате
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]