|
Как сократить таблицу РегистрСведений.лВерсииОбъектов через t-sql |
☑ |
0
dmrjan
21.10.23
✎
14:10
|
Пытаюсь сократить таблицу через MSSQL Studio (MSSQL 2019)
USE [base20];
DELETE FROM [base20].[dbo].[_InfoRg11063]
WHERE CONVERT(datetime, [_Fld11068], 102) < '2022.12.31'
Результат - преобразование типа данных varchar в тип данных datetime привело к значению вне диапазона.
посмотрел поле -
4022-02-10 14:45:04.000
_Fld11068 (datetime, НЕ NULL)
Смущает число 40 вначале, может поэтому не идет преобразование?
|
|
1
H A D G E H O G s
21.10.23
✎
15:24
|
Может поэтому.
В sql 1С добавляет к своим датам 2000 лет
|
|
2
Гена
21.10.23
✎
16:13
|
(1) Я правильно предполагаю, что сдвиг в 2000 лет из-за разницы минимальных (пустых) дат в 1С и sql?
Если так, то должен быть и обратный сдвиг в минус те же 2000? Значит, если sql по заданной формуле соберёт, например, 1998.10.21 - то после возврата в 1С этой даты, она квакнет мимо разрешённого диапазона?
|
|
3
АНДР
21.10.23
✎
21:27
|
(2) это особенность начала летоисчисления даты в ms sql из-за особенностей ек хранения. Значение смещения дат 1с хранит в табличке dateoffset
|
|
4
АНДР
21.10.23
✎
21:29
|
(0) литерал даты в ms sql без точек. И учитывай смещение дат
|
|
5
dmrjan
23.10.23
✎
12:03
|
Всем спасибо. Вопрос решился. Сделал так:
USE [base20];
DELETE FROM [base20].[dbo].[_InfoRg11063]
WHERE (CONVERT(datetime, [_Fld11068], 102)) < DATEADD(YEAR, 2000, CONVERT(datetime, '2022-12-31', 102))
Проверил в 1с версионирование - регистр сведений сократился.
|
|