de173 Δημοσ. 1 Οκτωβρίου 2010 Δημοσ. 1 Οκτωβρίου 2010 Καλησπέρα σε όλους τους συμφορουμίτες! Θα ήθελα να κάνω μία ερώτηση σχετική με μετατροπη ενός character πεδίου σε date. Το πεδίο είναι της μορφής ΕΕΕΕΜΜΗΗ (char) και με μετατροπή convert(date,[old_date],112) as [new_date] μετατρέπω την ημερομηνία σε ΗΗ/ΜΜ/ΕΕΕΕ (date). Το πρόβλημα εμφανίζεται οταν το πεδίο [old_date] είναι 00000000. Το query βγάζει σφάλμα στην μετατροπή. Υπάρχει τρόπος να μετατρέψω αυτήν την ημερομηνία (με τα μηδενικά) σε 00/00/0000; Ευχαριστώ πολύ!
MitsakosGR Δημοσ. 1 Οκτωβρίου 2010 Δημοσ. 1 Οκτωβρίου 2010 Υπάρχει τρόπος να μετατρέψω αυτήν την ημερομηνία (με τα μηδενικά) σε 00/00/0000; Όλες οι βάσεις δεδομένων έχουν ένα εύρος τιμών για την ημερομηνία. Δεν μπορείς να βάλεις ότι ημερομηνία θέλεις, εξού και το σφάλμα. Δες σε αυτή που χρησιμοποιείς τι ημερομηνίες μπορεί να δεχτεί. Edit: Αν χρησιμοποιείς mySQL δοκίμασε να κάνεις SELECT FROM_DAYS(old_date); μήπως σε αφήσει να το περάσεις έτσι.
de173 Δημοσ. 1 Οκτωβρίου 2010 Μέλος Δημοσ. 1 Οκτωβρίου 2010 Όλες οι βάσεις δεδομένων έχουν ένα εύρος τιμών για την ημερομηνία. Δεν μπορείς να βάλεις ότι ημερομηνία θέλεις, εξού και το σφάλμα. Δες σε αυτή που χρησιμοποιείς τι ημερομηνίες μπορεί να δεχτεί. Από την στιγμή που το μετατρέπω σε date, δέχεται μόνο ημερομηνίες (π.χ. ΔΕΝ θα δεχτεί να μετατρέψει το string 20100230). Υπάρχει τρόπος με κάποιο if μέσα στο select να μπορέσω να δώσω εγώ συγκεκριμένη ημερομηνία μόνο για τις μηδενικές; (δηλαδή το 00000000 να μετατραπεί σε 01/01/1900)
MitsakosGR Δημοσ. 1 Οκτωβρίου 2010 Δημοσ. 1 Οκτωβρίου 2010 Από την στιγμή που το μετατρέπω σε date, δέχεται μόνο ημερομηνίες (π.χ. ΔΕΝ θα δεχτεί να μετατρέψει το string 20100230).Υπάρχει τρόπος με κάποιο if μέσα στο select να μπορέσω να δώσω εγώ συγκεκριμένη ημερομηνία μόνο για τις μηδενικές; (δηλαδή το 00000000 να μετατραπεί σε 01/01/1900) Δεν σε πρόλαβα, το έγραψα στο προηγούμενο. Τι βάση χρησιμοποιείς;
de173 Δημοσ. 1 Οκτωβρίου 2010 Μέλος Δημοσ. 1 Οκτωβρίου 2010 Δεν σε πρόλαβα, το έγραψα στο προηγούμενο.Τι βάση χρησιμοποιείς; SQL και συγκεκριμένα 2008
MitsakosGR Δημοσ. 1 Οκτωβρίου 2010 Δημοσ. 1 Οκτωβρίου 2010 SQL και συγκεκριμένα 2008 Δεν έχω το SQL-SERVER εγκατεστημένο εδώ. Δοκίμασε να του βάλεις ένα if μετά το select και πριν την μετατροπή και αν είναι 0000 να το βάζει καρφωτά 1900/01/01 αλλιώς να κάνει την μετατροπή.
attsifte Δημοσ. 1 Οκτωβρίου 2010 Δημοσ. 1 Οκτωβρίου 2010 >Select convert(date,[old_date],112) as [new_date] where isnull(old_date,00000000) <> '00000000' ?? Το old_date είναι varchar ή date; Tώρα κάνει το where σαν να είναι varchar και ίσως έχει θέμα άν είναι date. Δοκίμασε το. Ή δεν ξέρω άν θές case. Tότε δοκίμασε κάτι τέτοιο >Select case when old_date = '00000000' then '01/01/1900' else convert(date,[old_date],112) end as [new_date]
de173 Δημοσ. 1 Οκτωβρίου 2010 Μέλος Δημοσ. 1 Οκτωβρίου 2010 >Select convert(date,[old_date],112) as [new_date] where isnull(old_date,00000000) <> '00000000' ?? Το old_date είναι varchar ή date; Tώρα κάνει το where σαν να είναι varchar και ίσως έχει θέμα άν είναι date. Δοκίμασε το. Ή δεν ξέρω άν θές case. Tότε δοκίμασε κάτι τέτοιο >Select case when old_date = '00000000' then '01/01/1900' else convert(date,[old_date],112) end as [new_date] Δούλεψε το CASE τελικά! Σας ευχαριστώ!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.