Πολλές φορές έχουμε βρεθεί στην θέση να κάνουμε σύγκριση δεδομένων της λογικής «φέτος-πέρυσι» και τις περισσότερες φορές ο «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/