string to date conversion
Hi
Welke functie in MySQL gebruik je om een de string
'1-3-2009 0:00:00' om te zetten naar het DATE format:
2009-03-01
?
alvast bedankt
grt I.
Welke functie in MySQL gebruik je om een de string
'1-3-2009 0:00:00' om te zetten naar het DATE format:
2009-03-01
?
alvast bedankt
grt I.
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
Zelf een beetje zoeken kan ook geen kwaad:
mysql date functions.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
mysql date functions.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
De datumfuncties van MySQL zijn bedoeld om met een geldige datum te werken. De vraag is: hoe komt de TS aan die ongeldige datum in zijn database?
@Karl
inderdaad, de vraag is dus hoe een valide DATE van een sting te maken.
@Jan
via een ODBC export van een slecht opgezette db. Dit lijkt de enige manier om de data te sanatizen.
En ja ik weet bestl hoe dat met PHP te doen maar dat is over het algemeen langzamer dan MySQL toch?
Ter indicatie: het gaat om 8000 records.
Kortom ik ga de stringbewerkingen in MySQL wel eens bekijken
inderdaad, de vraag is dus hoe een valide DATE van een sting te maken.
@Jan
via een ODBC export van een slecht opgezette db. Dit lijkt de enige manier om de data te sanatizen.
En ja ik weet bestl hoe dat met PHP te doen maar dat is over het algemeen langzamer dan MySQL toch?
Ter indicatie: het gaat om 8000 records.
Kortom ik ga de stringbewerkingen in MySQL wel eens bekijken
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
Okee, voor ik je help een paar vraagjes:
- Zeker weten dat het een DATE moet worden en geen DATETIME?
- Zeker weten dat in het oude foute formaat de uren soms met 1 cijfer gegeven zijn?
- Zeker weten dat het een DATE moet worden en geen DATETIME?
- Zeker weten dat in het oude foute formaat de uren soms met 1 cijfer gegeven zijn?
Ja want het TIME gedeelte zijn, zoals in het voorbeeld, alleen maar nullen. Omit
De dag en maand bevatten 1 of 2 digits door - gescheiden
De dag en maand bevatten 1 of 2 digits door - gescheiden
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
Vooral dat laatste is erg vervelend! In je voorbeeld had je voorloopnullen bij dag en maand. Dan zou je gewoon zoiets kunnen
doen:
Je gebruikt dan de SUBSTR functie van MySQL in combinatie met CONCAT om een goeie datumstring in elkaar te puzzelen. Als je test eenmaal de goede uitkomst geeft, maak je er een UPDATE query van.
MySQL heeft ook REGEX mogelijkheden, daar zou ik eens naar gaan kijken.
doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
foutedatum,
CONCAT(
SUBSTR(foutedatum, 7, 4),
'-',
SUBSTR(foutedatum, 4, 2),
'-',
SUBSTR(foutedatum, 1, 2)
)
AS goededatum
FROM datumfouten
foutedatum,
CONCAT(
SUBSTR(foutedatum, 7, 4),
'-',
SUBSTR(foutedatum, 4, 2),
'-',
SUBSTR(foutedatum, 1, 2)
)
AS goededatum
FROM datumfouten
Je gebruikt dan de SUBSTR functie van MySQL in combinatie met CONCAT om een goeie datumstring in elkaar te puzzelen. Als je test eenmaal de goede uitkomst geeft, maak je er een UPDATE query van.
MySQL heeft ook REGEX mogelijkheden, daar zou ik eens naar gaan kijken.
Klopt (van die voorloopnullen) zag ik later pas.
thx ga ik uitkomen
thx ga ik uitkomen
Ik heb net even in de MySQL handleiding gekeken en REGEX in MySQL schijnt erg traag te zijn. Mocht het om een grote tabel gaan, dan is het waarschijnlijk handiger om hem gewoon uit te lezen en met PHP regexen te werken.
ik zat nog te denken aan een IF( i.c.m. stringlengte.
maar ik weet niet of dat kan.
maar ik weet niet of dat kan.
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
Heb ooit eens een functie gemaakt hiervoor ^^..
Heel handig ^^
Gebruik je dus bv zo
Heel handig ^^
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// CONVERTTIME()
function converttime($string, $format) {
$dtime = new datetime($string);
return $dtime->format($format);
} // END CONVERTTIME()
?>
// CONVERTTIME()
function converttime($string, $format) {
$dtime = new datetime($string);
return $dtime->format($format);
} // END CONVERTTIME()
?>
Gebruik je dus bv zo
Code (php)
1
2
3
4
2
3
4
<?php
$datum = '1-3-2009 0:00:00';
echo converttime($datum, "Y-m-d"); // OUTPUT: 2009-03-01
?>
$datum = '1-3-2009 0:00:00';
echo converttime($datum, "Y-m-d"); // OUTPUT: 2009-03-01
?>
yep, velen weten meer dan 1 !
thx.
p.s. dat wordt dan echt een batchjob dan.
thx.
p.s. dat wordt dan echt een batchjob dan.
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo




