go backarticles

Articles of SQLschool.gr Team

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

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/

Vassilis Ioannidis

Vassilis Ioannidis

Σπούδασα προγραμματιστής αλλά τελικά με κέρδισαν οι βάσεις και ιδιαίτερα ο SQL Server.Μην παρεξηγηθώ, αγαπώ τον προγραμματισμό και την δύναμη που πηγάζει από τον κώδικα. Αυτή η μοναδική, για 'μένα, δυνατότητα που σου δίνεται να δίνεις "ζωή" από το τίποτα σε κάτι, μόνο εμείς και ο Dr. Frankenstein μπορούμε να το βιώσουμε και να φωνάξουμε: "It's alive! It's alive" …μέχρι να το πιάσουν οι χρήστες :P. Γενικά, γνωρίζω τον SQL Server από την έκδοση 6.5 όπου πρώτη φορά βοήθησα στην εγκατάσταση σε ένα κουτί με Windows NT 3.51 στα τέλη του 1995. Έκτοτε με ένα μικρό διάλλειμα μεταξύ 1999-2000 ασχολούμαι σε μόνιμη βάση με την τεχνολογία γύρω από τον Microsoft SQL Server και την αρχιτεκτονική των βάσεων δεδομένων.Καθημερινά συντηρώ και παρακολουθώ αρκετά παραγωγικά συστήματα (OLTP/OLAP) με SQL πίσω και συνδέσεις με διαφορετικά υποσυστήματα δεξιά και αριστερά και σίγουρα δεν μπορώ να πω ότι τα έχω δει όλα ή ότι τα ξέρω όλα. Κάθε άλλο. Κάθε μέρα, αν είμαι τυχερός, μαθαίνω και κάτι και αυτό είναι μια κινητήρια δύναμη που άλλες φορές σε εξιτάρει και άλλες φορές σε εξουθενώνει. Όλα αυτά τα χρόνια, έχω εμπλακεί σε όλες τις φάσεις του προγραμματισμού από τον σχεδιασμό μέχρι και την τελική διάθεση/εγκατάσταση της λύσης στους χρήστες. Είμαι κάτοχος αρκετών πιστοποιήσεων της Microsoft την τελευταία 15ετία (MCSP, MCT, MCSD, MCDBA, MCTS [SQL, NAV2009]) και θεωρώ ότι η ορθή και “by-the-book” διαδικασία πιστοποίησης σε βάζει σε ένα όμορφο δρόμο εκμάθησης -και γιατί όχι- προβολής της δουλειάς και της αγάπης που έχεις για το αντικείμενο που κάνεις.


Relative Articles

Comments

user-gravatar

On 09 May 2016 @ 9:28 AM Ananth wrote:

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

COMMENT

FULL NAME

EMAIL ADDRESS

We use Gravatar

WEB SITE



captcha


 

Newsletter

If you want to receive updates from us subscribe below with your email.
Follow us in
PASS chapter logo

The Official PASS Local Group for Greece

sql school greece logo
© 2010-2020 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.