go backsqlschool blogs list

Tip: This year vs. last year date. Compare same weekdays between 2 years.

by Vassilis Ioannidis

Πολλές φορές έχουμε βρεθεί στην θέση να κάνουμε σύγκριση δεδομένων της λογικής «φέτος-πέρυσι» και τις περισσότερες φορές ο «business άνθρωπος» θα μας πει κάτι «μα μου συγκρίνεις τις πωλήσεις της Δευτέρας με της Κυριακής ή κάτι τέτοιο αντίστοιχο.

Δεν μπορείς να τον αγνοήσεις και πρέπει να βρεις και μια λύση καθαρή που να παίζει και όταν τα έτη είναι δίσεκτα. Enters… Drum rolls please… the “DATEADD” T-SQL function! Η σύνταξη της DATEADD είναι απλή:

DATEADD (datepart, number, date)
Περίσσότερα για την σύνταξη εδώ

Θα πρέπει εδώ να σκεφτούμε την λογική που θα υλοποιήσουμε καθώς υπάρχουν διάφορες υλοποιήσεις εκεί έξω, αλλά αυτή που φαίνεται να κερδίζει και στην χρήση αλλά και στην απλότητα της είναι η εξής:

DATEADD(wk, -52, @yourDateHere)

Ως γνωστό το έτος έχει 52 βδομάδες, οπότε και η σύνταξη.

Ας δούμε τα εξής παραδείγματα:

DECLARE @thisYear Date
SET @thisYear = '2016-05-05' 
SELECT 'Leap' as 'Year Type', @thisYear as 'This year', DATEADD(week, -52, @thisYear) as 'Last year'

/*
Results
Year Type This year  Last year
--------- ---------- ----------
Leap      2016-05-05 2015-05-07
*/


DECLARE @thisYear Date
SET @thisYear = '2015-05-20'
SELECT 'Normal' as 'Year Type', @thisYear as 'This year', DATEADD(week, -52, @thisYear) as 'Last year'

/*
Results
Year Type This year  Last year
--------- ---------- ----------
Normal    2015-05-20 2014-05-21
*/


Keep coding! \m/
Ημερομηνία: 06 May 2016 14:17
Αξιολόγηση:
Tags:
Share it:

Σχόλια - Comments

user-gravatar

Στις 09 May 2016 @ 9:28 AM o/η Ananth έγραψε:

Thanks for this great information. That’s a awesome article you posted. I found the post very useful as well as interesting.

Αφήστε το σχόλιο σας - Leave your comment

Τα σχόλια έχουν κλείσει.
Επιτρέπονται μόνο τα σχόλια από τα μέλη του SqlSchool.gr.


newsletter subscription

Εάν επιθυμείτε να λαμβάνετε ενημέρωση από εμάς, δώστε μας το e-mail σας.
PASS chapter logo
Official Professional Association for SQL Server (PASS) chapter for Greece
Join to PASS