konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Mam tabele Rachunek w niej kolumna data_wystawienia
Jak wyciagnac za pomoca datediff rachunki wystawione tylko za ostatni rok kalendarzowy

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Kamil J.:
Mam tabele Rachunek w niej kolumna data_wystawienia
Jak wyciagnac za pomoca datediff rachunki wystawione tylko za ostatni rok kalendarzowy

do tej funkcji masz dwie daty? skąd je bierzesz?

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

A dlaczego datefdiff() a nie prościej year(data_wystawienia)?

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

No można np. Year(now()) -1 = Year(R.datawystawienia)

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Powiedziałbym, że będzie to:

a) WHERE
datediff(year, data_wystawienia, GETDATE()) = 1

lub
a) WHERE
year(data_wystawienia) = 2013

a) pokaże Ci ostatnie 365 dni.
b) pokaże rachunki w 2013 roku.

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

WHERE
datediff(year, data_wystawienia, GETDATE()) = 1 jeśli coś było by wystawione np. 28.12.2013 a teraz jest 04.01.2014 to co wtedy ? Da jeden ?

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Może ktos mi pomoze z tym ?
http://www.goldenline.pl/forum/3400911/baza-danych-pro...

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Kamil J.:
WHERE
datediff(year, data_wystawienia, GETDATE()) = 1 jeśli coś było by wystawione np. 28.12.2013 a teraz jest 04.01.2014 to co wtedy ? Da jeden ?


2014 - 2013 = 1 jakby nie patrzeć :)

Mała poprawka z mojej strony -

datediff(year, data_wystawienia, GETDATE()) = 1

Wyrzuci Ci tylko zamówienia które są złożone w 2013 roku. Jeżeli chcesz wyświetlić też tegoroczne wystarczy zamienić na

datediff(year, CA.DateAdded, GETDATE()) <= 1

Wyrzuci Ci w ten sposób wszystkie zamówienia po 1 stycznia 2013 do dnia dzisiejszego.
Kamil N.

Kamil N. Expert of Microsoft
SQL Server, Business
Intelligence & D...

Temat: Datediff ostatni rok kalendarzowy

Zasadniczo używanie funkcji na kolumnie, która ma być kryterium wyszukiwania, nie jest dobrym rozwiązaniem ponieważ silnik bazy nie wykorzysta wydajnie z potencjalnych indeksów zawierających tą kolumnę - a to z kolei będzie miało negatywny wpływ na wykonanie zapytania (np. IndexScan zamiast IndexSeek). Ale to tylko garść teorii, która ma znaczenie przy dużych zbiorach.

Ja zrobiłbym to w ten sposób: (wersja dla SQL 2008 i starszych)
select * from rachunki
where CreationDate >= cast(cast(year(getdate())-1 as varchar(4))+'0101' as datetime)
and CreationDate < cast(cast(year(getdate()) as varchar(4))+'0101' as datetime)


i dla wersji SQL2012 (wprowadzono funkcję DATEFROMPARTS):
select * from rachunki
where CreationDate >= datefromparts(year(getdate()), 1, 1)
and CreationDate < datefromparts(year(getdate())-1, 1, 1)

konto usunięte

Temat: Datediff ostatni rok kalendarzowy

Zasadniczo muszę tylko wydobyć dane bez wgłębiania się w szczegóły.

Następna dyskusja:

Networkdays a DateDiff




Wyślij zaproszenie do