Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

Îåêßíçóå áðü ôï ìÝëïò nikolaosk. Τελευταία δημοσίευση από το μέλος nikolaosk στις 31-10-2007, 14:24. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-10-2007, 23:59 36814

    Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    Καλησπέρα,

    Με αφορμή ερώτηση ενός φίλου, που ήθελε, να απομονώσει το χρόνο(time) και την ημερομηνία(date) από ένα πεδίο(datetime) σε ένα πίνακα μιας βάσης στον sql server, μπορούμε να πούμε τα εξής.

    O Sql Server δεν έχει data type που να μπορούμε να αποθηκεύσουμε μόνο date(12/12/2004), ή μόνο χρόνο(23:17:48).έχει datetime,smalldatetime data types.

    κάποια παραδείγματα ακολουθούν.

    ανοίγετε ένα query editor-query analyzer, γράψτε το παρακάτω sql statement και πατήστε F5

    SELECT DATEADD(day,

    DATEDIFF(day, '20070501', getdate()),

    '20070501')

    result

    2007-10-30 00:00:00.000

    ********************

    Βρίσκουμε την διαφορά μεταξύ μιας ημερομηνίας(όποια και αν είναι αυτή),

    DATEDIFF(day, '20070501', getdate())

    και της σημερινής και μετά προσθέτουμε τις ημέρες αυτές πάλι στην ίδια ημερομηνία.

     

    για να πάρουμε μόνο την ημερομηνία

    SELECT Convert(CHAR(10), getdate(), 101)

    result

    10/30/2007

    ********************

    για να πάρουμε μόνο την ώρα

    SELECT substring(Convert(CHAR(19), getdate(), 120 ),12,8)

    result

    23:43:57

    ********************

    για να πάρουμε μόνο την ώρα, χωρίς δευτερόλεπτα

    SELECT substring(Convert(CHAR(19), getdate(), 120 ),12,5)

    result

    23:45

    source for these tips:

    http://www.thescripts.com/forum/thread142592.html

    http://www.karaszi.com/SQLServer/info_datetime.asp

     

     

     

     


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
    Δημοσίευση στην κατηγορία: , , ,
  •  31-10-2007, 08:30 36820 σε απάντηση της 36814

    Απ: Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    Το είχαμε συζητήσει αρκετά το θέμα παλιότερα, αν και δεν προλαβαίνω να βρω τώρα τα posts. Ο τρόπος που προτείνεις έχει μερικά προβλήματα όπως η μετατροπή σε char, η χρήση κάποιου συγκεκγριμμένου datetime format και η χρήση πολλών εντολών. Αν σκοπός σου είναι να κάνεις join μεταξύ πινάκων βάση της ημερομηνίας και μόνο, ή αν θέλεις να κάνεις κάποιο select με βάση την ημερομηνία μόνο ή την ώρα μόνο, θα χάσεις τη δυνατότητα χρήσης indexes.

    Μία άλλη λύση είναι να εκμεταλλευτείς το γεγονός ότι μία τιμή DateTime αποθηκεύεται ως δεκαδικος αριθμός, με το ακέραιο μέρος να είναι η ημερομηνία και το δεκαδικό η ώρα. Μπορείς έτσι να συγκρίνεις ημερομηνίες κόβοντας το δεκαδικό μέρος. Σε select και join που περιλαμβάνουν δύο ημερομηνίες, π.χ. Date1 και Date2, μπορείς να πάρεις την ημερομηνία μόνο από το Date1 και να ελέγξεις τη συνθήκη:
    FLOOR(Date1) <= Date2 and Date2 < FLOOR(Date1)  +1

    Έτσι εκμεταλλεύεσαι τα indexes που υπάρχουν στο Date2. Αν θέλεις να εκμεταλλευτείς τα indexes και στις δύο τιμές θα πρέπει να χρησιμοποιήσεις ένα calculated field ή ένα view που θα επιστρέφει την FLOOR(Date1) και να φτιάξεις ένα index στο πεδίο αυτό.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  31-10-2007, 13:28 36832 σε απάντηση της 36820

    Απ: Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    Και βέβαια να πούμε ότι ο SQL Server 2008 εισάγει τους νέους τύπους date (ημερομηνία μόνο) και time (ώρα μόνο) για να αποφεύγουμε τα ακροβατικά.


    Νατάσα Μανουσοπούλου
  •  31-10-2007, 14:10 36833 σε απάντηση της 36832

    Απ: Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    Νατάσα Μανουσοπούλου:

    Και βέβαια να πούμε ότι ο SQL Server 2008 εισάγει τους νέους τύπους date (ημερομηνία μόνο) και time (ώρα μόνο) για να αποφεύγουμε τα ακροβατικά.

    Καιρός δεν ήταν; Big Smile


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  31-10-2007, 14:22 36834 σε απάντηση της 36820

    Απ: Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    πολύ εύστοχο αυτό που λες παναγιώτη.

    θα στείλω το link της συζητησής μας στον φίλο μου. βασικά ήτανε Happy με αυτό που του είπα, αλλά αυτά που λες είναι ενδιαφέροντα πολύ.δεν ήθελε κάποιο join.

    θα ψάξω και γω να βρω τα άλλα Posts.

    ευχαριστώ


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
    Δημοσίευση στην κατηγορία: , ,
  •  31-10-2007, 14:24 36835 σε απάντηση της 36832

    Απ: Απομόνωση μόνο του χρόνου(time) ή ημερομηνίας(date) ενός datetime field

    ευχαριστώ.

    έβλεπα τα New features του 2008 αλλά κάπου δεν το είδα αυτό. Confused

    τέλος οι ταρζανιές λοιπόν. και όπως λέει και ο φίλος ο παναγιώτης καιρός ητανε....

     


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems