Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω ένα πεδίο τύπου varchar σε ένα πεδίο της βάσης δεδομένων.

Αυτό όμως εκτός από χαρακτήρες περιέχει και ημερομηνία στο τέλος. Για παράδειγμα:

 

χαρακτήρες/12-1-2014

 

Μπορεί όμως να είναι και 13-10-2014, δηλαδή μπορεί να είναι είτε οι 9 είτε οι τελευταίοι 10 χαρακτήρες...

 

Υπάρχει κάποιος τρόπος για να πάρω την ημερομηνία, να την βάλω σε ένα άλλο πεδίο καθαρά τύπου date και να αφήσω στο άλλο πεδίο μόνο τους χαρακτήρες;

Δημοσ.

Γράψε ένα πρόγραμμα σε κάποια άλλη γλώσσα, το οποίο για κάθε εγγραφή θα ψάχνει με ένα regular expression την ημερομηνία και θα την περνάει στη νέα στήλη.

Δημοσ.

Με ένα συνδυασμό από reverse(), charindex() και left().
 
Πχ:

create table temp (a varchar(200),b date)

INSERT INTO temp (a,  VALUES
('abcf/efgh/10-3-2014', NULL),
('uhyt/ 31-5-2014', NULL),
('a/e / 1-9-2013', NULL)

set dateformat dmy

update temp
set b=reverse(
    left(
        reverse(a),
        charindex('/',reverse(a))-1
        )
    )

select * from temp

drop table temp

EDIT: Βελτιωμένη (απλούστερη) έκδοση, που περιλαμβάνει και την αφαίρεση της ημερομηνίας από το a (που άργησα να το προσέξω...)

create table temp (a varchar(200),b date)

INSERT INTO temp (a,  VALUES
('abcf/efgh/10-3-2014', NULL),
('uhyt/ 31-5-2014', NULL),
('a/e / 1-9-2013', NULL)

set dateformat dmy

update temp
set 
	a=left(a,len(a)-charindex('/',reverse(a))),
	b=right(a,charindex('/',reverse(a))-1)

select * from temp

drop table temp
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...