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

 

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

Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

Îåêßíçóå áðü ôï ìÝëïò deykas. Τελευταία δημοσίευση από το μέλος deykas στις 23-05-2007, 11:59. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-05-2007, 23:48 31984

    Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    Συνάδελφοι καλησπέρα.
    Έχω σε text box π.χ. την ημερομηνία 19/5/2007 (δηλ. local format) και θέλω όπως ακριβώς είναι να την αποθηκεύσω στον SQL Server 2000 και όχι ως 5/19/2007, ώστε να μπορώ να κάνω και αναζήτηση με το ίδιο format.
    Γίνεται; Δοκιμάζω το DateTime.Parse("19/5/2007") aλλά δεν το αναγνωρίζει ως έγκυρο φορματ.
    Κάποια ιδέα;
  •  20-05-2007, 12:34 31988 σε απάντηση της 31984

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

     μα δεν χρειάζεται να ασχοληθείς με το format του sql server. Δεν σε ενδιαφέρει ούτε πώς τις αποθηκεύει ούτε πώς τις συγκρίνει. Δεν σου φτάνει να κάνει τη σύγκριση σωστά;


  •  20-05-2007, 17:57 31998 σε απάντηση της 31988

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    Έχεις δίκιο σ'αυτό που λες, απλά επειδή παίρνω την ημερομηνία από textbox με τη μορφή dd/MM/yyy, πρέπει να κάνω κάτι για να αποθηκευτεί σωστά. Τέλος πάντων, αυτό που έκανα και λειτύργησε είναι:

    dim culture as cultureinfo=new cultureinfo("fr-FR",true)
    και η ημερομηνία ως: Datetime.parse(textvalue,culture,DatetimeStyles.NocurrentDateDefault)

    Μπορεί να είναι περιττό, αλλά δούλεψε εντάξει.
    ευχαριστώ
  •  20-05-2007, 19:34 31999 σε απάντηση της 31984

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    deykas:
    Γίνεται; Δοκιμάζω το DateTime.Parse("19/5/2007") aλλά δεν το αναγνωρίζει ως έγκυρο φορματ.

    Τι εννοείς "δεν το αναγνωρίζει"; Ποιος εννοείς; Το .NET runtime ή ο SQL Server; Τι ακριβώς λέει το exception που παίρνεις; Πως ακριβώς γράφεις τον κώδικα για την αποθήκευση; Αν μπορείς δώσε λίγο κώδικα, αν γίνεται το πολύ 10 γραμμές. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  21-05-2007, 11:19 32025 σε απάντηση της 31999

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    Ο SQL server δεν το αναγνώριζε. Τελικά, όπως έγραψε και πριν, έκανα το παρακάτω και είναι οκ:
    dim culture as cultureinfo=new cultureinfo("fr-FR",true)
    και η ημερομηνία ως: Datetime.parse(textvalue,culture,DatetimeStyles.NocurrentDateDefault)

    ευχαριστώ.
  •  21-05-2007, 11:29 32028 σε απάντηση της 32025

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    γιατί δεν κάνεις το εξής: πρώτα να κάνεις parse το content του TextBox (προφανώς με String.Split), μετά να φτιάξεις ένα DateTime Object περνώντας στον constructor του day,month,year, και μετά να το στείλεις στη βάση. Γενικά, δεν είναι καλή τακτική να αλλάζεις το CultureInfo 'έτσι'.

     

    ΥΓ. btw, γιατί δεν χρησιμοποιείς datetimepicker; θα σε γλιτώσει από το parsing/έλεγχο δεδομένων του textbox. Smile

    ΥΓ2. Αν όντως θες textbox για κάποιο λόγο (και ανα γράφεις για .ΝΕΤ 2) για ρίξε μια ματιά και στο MaskedTextBox....


    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  21-05-2007, 14:15 32046 σε απάντηση της 32025

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    deykas:
    Ο SQL server δεν το αναγνώριζε. Τελικά, όπως έγραψε και πριν, έκανα το παρακάτω και είναι οκ:
    dim culture as cultureinfo=new cultureinfo("fr-FR",true)
    και η ημερομηνία ως: Datetime.parse(textvalue,culture,DatetimeStyles.NocurrentDateDefault)

    ευχαριστώ.

    Η λύση αυτή δεν είναι η ενδεδειγμένη. Απλά δουλεύει στο τρέχον περιβάλλον που έχεις. Η λύση του split θα ήταν πιο σωστή, αλλά και αυτή θα ήταν περιττή, μια που αν ακολουθήσεις τα best practices δε χρειάζεται.

    Το "Ο SQL Server δεν το αναγνώριζε" δεν είναι αρκετό. Πρέπει να πεις το συγκεκριμένο σφάλμα. Αν οι πελάτες-χρήστες που έχεις σου αναφέρουν με αυτό τον τρόπο τα προβλήματα που αντιμετωπίζουν (π.χ. πατάω save και δεν αποθηκεύει) δεν θα μπορείς να βγάλεις άκρη. Με τον ίδιο τρόπο κανείς εδώ δεν μπορεί να καταλάβει πιο ήταν το πρόβλημα που είχες με τον SQL Server. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  21-05-2007, 14:15 32047 σε απάντηση της 32025

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    Αν χρησιμοποιούσες "local format" (υποθέτω ότι εννοείς ότι ο χρήστης έχει ελληνικά locale settings) δεν θα είχες κανένα πρόβλημα. Το θέμα των ημερομηνιών το έχουμε συζήτήσει άπειρες φορές, σε σημείο που έκατσα και έγραψα όλες τις απαντήσεις σε ένα blog post, στο "Ο SQL Server ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ κόλπα για να υποστηρίξει ελληνικά". Πρώτον, ο SQL Server αποθηκεύει σωστά τις ημερομηνίες, αν φυσικά δεν τις στείλεις σαν χύμα κείμενο. Stored procedures ή parameterized queries δεν έχουν πρόβλημα. Αν χρησιμοποιείς χύμα SQL, θα πρέπει να περάσεις την ημερομηνία στη μορφή yyyyMMdd ή

    Το .NET Framework το ίδιο χρησιμοποιεί πάντα το locale του συστήματος για να κάνει τη σωστή μετατροπή της ημερομηνίας. Μόνο σημείο στο οποίο χρειάζεται προσοχή είναι όταν ο χρήστης έχει αγγλικές ρυθμίσεις locale αλλά δώσει την ημερομηνία σε ελληνικό format. Γι αυτό καλύτερα να χρησιμοποιείς DateTimePicker control αντί για απλό Textbox.

    Επίσης γιατί χρησιμοποιείς γαλλικό locale αντί για ελληνικό? Εκτός και αν ο χρήστης είναι γάλλος, το ελληνικό locale κάνει σωστά τη δουλειά.

    Να τελειώσω με τη στάνταρ απάντηση σε ερωτήσεις ημερομηνίας και αριθμών. Τα προβλήματα οφείλονται σχεδόν πάντα στο κάποιος δεν κατάλαβε ότι το Framework και ο SQL καταλαβαίνουν από ημερομηνίες, και προσπάθησε να επιβάλει τη μετατροπή είτε ενσυνείδητα (προσπαθώντας να γράψει την ημερομηνία με ένα συγκεκριμένο τρόπο) είτε ασυνείδητα (μετατρέποντας μία ημερομηνία σε κείμενο ή το αντιστροφο). Αν χρησιμοποιείς DateTimePicker control και αποθηκεύεις στη βάση με stored procedures ή parameterize queries δεν θα έχεις ποτέ πρόβλημα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-05-2007, 11:59 32120 σε απάντηση της 32047

    Απ: Αποθήκευση Ημερ/νίας dd/MM/yyyy σε SQL server 2000

    Ευχαριστώ όλους για τις απαντήσεις. Δοκιμάζω και για ό,τι πρόβλημα επανέρχομαι...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems