Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
народ, помогите пожалуйста, в sql я ноль...так получилось что поменяли в базе параметр смещения дат, после чего появились даты вместо 2012 - 4012 и .д...в 1с 4012 не дает удалить и модифицировать ибо платформа поддерживает литералы только до 3999, когда натыкается на 3999 вылетает с ошибкой....поэтому пришла мысль править напрямую в sql..помогите составить запрос который бы менял год 4012 во всех таблицах базы на 2012...вопрос простой для профи, сам тоже мануалы почитаю составлю но нужно срочно, помогите плиз...при успешном исходе кину на кошелек тому кто реально поможет 500р на пиво колу...
31 окт 12, 22:18    [13405246]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
guest_guest
Guest
gor178,

И в чем сложность?

UPDATE table SET
Date = DATEADD(yy, -2000, Date)
31 окт 12, 22:49    [13405344]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
guest_guest,

это во всех датах 2000 отнимается? а мне нужно только в тех которые старше 3999, как такое прописать?
31 окт 12, 23:00    [13405372]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
guest_guest
Guest
gor178
guest_guest,

это во всех датах 2000 отнимается? а мне нужно только в тех которые старше 3999, как такое прописать?



UPDATE table SET
Date = CASE WHEN DATEPART(YYYY, Date) > 3999 THEN DATEADD(yy, -2000, Date) ELSE Date END
31 окт 12, 23:05    [13405389]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
guest_guest,
вместо table название своей таблицы ставится? если по всем то * Нужно ставить?
31 окт 12, 23:09    [13405398]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
declare @val varchar(8000);

declare cur cursor for
select  'update '+TABLE_SCHEMA+'.'+ TABLE_NAME+' set '+COLUMN_NAME +' = dateadd(year,-2000,'+column_name+') where year('+column_name+') > 3999' as upd
from INFORMATION_SCHEMA.COLUMNS
where data_type like ('%date%') 
 
open cur 

fetch next from cur
into @val

while @@FETCH_STATUS=0
begin
	 
	 exec(@val)	 
	 fetch next from cur
	 into @val
end

close cur
deallocate cur


для таблиц к которым есть права.
но делать все надо супер аккуратно!!
31 окт 12, 23:15    [13405409]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
init.ora,
как то сложно для меня, народ оцените такой скрипт, это то что мне нужно?

update Config set Creation = case when YEAR(Creation) >=4000 then Creation else DATEADD(year, 2000, Creation) end,
Modified = case when YEAR(Modified ) >=4000 then Modified else DATEADD(year, 2000, Modified ) end
31 окт 12, 23:36    [13405455]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
select  'update '+TABLE_SCHEMA+'.'+ TABLE_NAME+' set '+COLUMN_NAME +' = dateadd(year,-2000,'+column_name+') where year('+column_name+') > 3999' as upd
from INFORMATION_SCHEMA.COLUMNS
where data_type like ('%date%') 


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

бекап базы сделал?)
31 окт 12, 23:52    [13405510]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
init.ora,
Дружище,а подскажи пожалуйста как в Update указать чтобы отбирало все таблицы бызы и все поля?
1 ноя 12, 01:08    [13405678]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
gor178,

пока не поздно, бросайте это дело!
После Вас накроется ВСЁ!
Ибо знания не нулевые, а даже отрицательные.
1 ноя 12, 09:27    [13406285]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
iap
gor178,

пока не поздно, бросайте это дело!
После Вас накроется ВСЁ!
Ибо знания не нулевые, а даже отрицательные.

+1

такие манипуляции с базой лучше оставить более опытным товарищам.
1 ноя 12, 09:46    [13406400]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
iap,
хочется поговорить? шли бы работать лучше раз по существу сказать нечего
1 ноя 12, 10:11    [13406545]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
gor178
Member

Откуда:
Сообщений: 7
init.ora,
операция простая, синтаксис не знаю, поэтому спрашиваю, было бы время мануалы почитал но его нет...
1 ноя 12, 10:12    [13406550]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
antbr
Member

Откуда:
Сообщений: 75
gor178,
вообще то он прав. Если вы своим скриптом случайно измените не те данные, кому то потом может быть очень плохо.
1 ноя 12, 10:13    [13406557]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
antbr
Member

Откуда:
Сообщений: 75
gor178
init.ora,
операция простая, синтаксис не знаю, поэтому спрашиваю, было бы время мануалы почитал но его нет...

Если бы такую операцию можно было бы сделать в один оператор вам бы уже ее сказали.
Вам уже написали скрипт сверху. Уберите в нем для начала exec(@sql) и проанализируйте результаты работы курсора. Когда убедитесь что ничего лишнего вы не потрете - запускайте.
1 ноя 12, 10:15    [13406570]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
gor178
init.ora,
операция простая, синтаксис не знаю, поэтому спрашиваю, было бы время мануалы почитал но его нет...



Читайте

Качайте и читайте
1 ноя 12, 10:16    [13406578]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
gor178
init.ora,
операция простая, синтаксис не знаю, поэтому спрашиваю, было бы время мануалы почитал но его нет...

Ответ был дан 13405409. Смелее. Самое страшное что может случится... уже случилось.
1 ноя 12, 10:16    [13406579]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
gor178
iap,
хочется поговорить? шли бы работать лучше раз по существу сказать нечего

А вот совет Вам был дан верный, зря Вы так. О Вас же беспокоятся...

Но если уж решили, не забывайте про бэкап! Без него даже New query не смейте жать.
1 ноя 12, 10:17    [13406588]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
chatm
Member

Откуда: Москва
Сообщений: 480
Ozerov
gor178
iap,
хочется поговорить? шли бы работать лучше раз по существу сказать нечего

А вот совет Вам был дан верный, зря Вы так. О Вас же беспокоятся...

Но если уж решили, не забывайте про бэкап! Без него даже New query не смейте жать.


Поддерживаю.

И не стоит в 1С-ку с sql скриптами залезать - результат будет отрицательный (при таких знаниях). Что мешает сделать в 1С нормальную обработку по замене дат?
1 ноя 12, 12:59    [13407887]     Ответить | Цитировать Сообщить модератору
 Re: замена дат(год) во всех таблицах 1с базы УТ , sql 2008  [new]
chatm
Member

Откуда: Москва
Сообщений: 480
gor178,

Такие даты могли появиться (скорее всего) при следующих событиях:

1. Была база со смещением 2000
2. Ее выгрузили и загрузили в базу со смещением 0
3. Увидели, что смещение неправильное и указали 2000.

Тогда имеет смысл вернуть смещение на 0, сделать выгрузку dt, завести новую базу и смещение 2000, и загрузить из dt
1 ноя 12, 13:04    [13407936]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить