powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что за особенность преобразования типов datetime2 и datetime
8 сообщений из 8, страница 1 из 1
Что за особенность преобразования типов datetime2 и datetime
    #40035541
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Подскажите, почему если в дате 3 значимых числа после точки, то преобразование к datetime2 и datetime дает неодинаковый результат?

if cast('2018-12-20 15:35:36.5230000' as datetime2) <> cast('20181220 15:35:36.523' as datetime) print '1'
if cast('2018-12-20 15:35:36.5200000' as datetime2) <> cast('20181220 15:35:36.52' as datetime) print '1'

СКЛ-сервер 2017
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40035549
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Патамушта точность этих типов данных разная.
Чти справку.
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40035649
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диам,

сервер не хранит '2018-12-20 15:35:36.5230000' или '20181220 15:35:36.523'
сервер хранит int, а в int ваши строки это большие разницы
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40036475
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо ответившим.
Поиск причины возник из-за косяка, который начался в MS Access после перехода на MS SQL2017.
Если форма построена на основе родного DAO-рекордсета, то родная акцессная команда обновления записи на форме приходит к СКЛ-серверу с блоком WHERE, где указаны все поля обновляемой таблицы. И если среди этих полей есть поле с типом datetime, то СКЛ-сервер делает преобразование значения, передаваемого в блоке WHERE в тип datetime2. И вот, если в таблице сохранено значение с 3 знаками после точки, то такая запись не будет обновлена. И Акцесс на попытку обновления записи получит уведомление об ошибке "Запись была изменена другим пользователем".

Решение - отвязывать форму от DAO-рекордсета. Временное решение - в таблицах, где дата сохраняется с точностью до миллисекунд, обновить значения, чтобы срезать миллисекунды.
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40036479
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
Диам,

сервер не хранит '2018-12-20 15:35:36.5230000' или '20181220 15:35:36.523'
сервер хранит int, а в int ваши строки это большие разницы

с каких это пор datetime стал int-ом ?
"физически", - это тип с фиксированной запятой
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40036480
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,

насколько интернет не врет, актуального описания от МС нет, но есть понимание, что хранится дата в виде двух интов (в одном 8 bytes), что можно конечно охарактеризовать как число с фиксированной запятой инт,инт

https://www.sqlshack.com/sql-server-datetime-data-type-considerations-and-limitations/
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40036481
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. хотя он сравнивает as a floating-point value. И это тоже годится, так как 8 бит (инт/float/double) есть 8 бит и неотличимы при хранении, разница только в описании типа.
...
Рейтинг: 0 / 0
Что за особенность преобразования типов datetime2 и datetime
    #40036483
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диам,

конвертация - это одно, а проверка на потерю обновлений - другое.

В твоем случае второе не проходит из-за ошибок первого.
Акцесс считает, что такой записи, какую он получил, в базе больше нет.

По части второго при работе с sql server - ты вообще такие слова - timestamp или rowversion встречал когда-нибудь?
заведи в редактируемой таблице поле типа rowversion
(старый акцесс такого типа может и не знать, он был про timestamp осведомлен),
и жизнь с обновлениями, может быть, наладится.

(То есть, в конце-концов наладится, но может быть еще какие магические телодвижения с бубном потребуются...)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что за особенность преобразования типов datetime2 и datetime
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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