Recepta na błąd:
Cannot resolve the collation conflict between "Polish_100_CI_AS" and "Polish_CI_AS" in the equal to operation.
W przypadku zapytania łączącego (join) dwie bazy danych z różnymi ustawieniami kodowania. Błąd powstaje przy joinie na pole, które w dwóch bazach ma różne kodowania.
W pytaniu przy join należy dopisać:
COLLATE Database_default
Czyli:
Select p1.*, p2.* from Baza1.dbo.lista1 p1 join Baza2.dbo.lista2 p2 on p2.string COLLATE Database_default = p1.string
poniedziałek, 15 kwietnia 2013
piątek, 4 stycznia 2013
T-SQL pierwszy dzień miesiąca i pokrewne
T-SQL pierwszy dzień miesiąca, ostatni dzień miesiąca, pierwszy dzień następnego miesiąca i tym podobne dla dowolnej zadanej daty. Sposób dość pokrętny, ale działa :)
declare @data datetime;
declare @starter datetime;
set @starter = '01.01.1900';
set @data = '29.02.2012'
select DATEADD(mm, datepart(mm, @data)-1, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter)) as pierwszy_dzień_miesiąca,
DATEADD(D, -1, DATEADD(mm, datepart(mm, @data), DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter))) as ostatni_dzień_miesiąca,
DATEADD(D, -1, DATEADD(mm, datepart(mm, @data)+3, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter))) as ostatni_dzień_Za_trzy_Miesiące,
DATEADD(mm, datepart(mm, @data)-3, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter)) as pierwszy_dzień_dwa_miesiące_temu
Oczywiście nie będzie działać dla dat < 01.01.1900
Subskrybuj:
Posty (Atom)