Hoe kan ik de datumfuncties gebruiken op een varchar?
Arjan Kapteijn
16/04/2008 14:12:00Doordat mijn voorganger 250.000+ rijen in een database heeft gepropt met alleen maar varchars heb ik nu een probleem. Een van die varchars is een datum en nu ben ik de sjaak omdat ik alleen de records wil hebben die minimaal 9 en maximaal 12 maanden oud zijn.
Enig idee hoe ik dit kan doen met een varchar? Een between gaat nu niet meer werken en de bekende datetime functies waarschijnlijk ook niet meer. Bijkomend probleem is natuurlijk het feit dat alles erin staat als 01-01-2008...
Hoe ga ik dit oplossen? Is er iemand die handig is hiermee? Of kan ik beter alle rijen ophalen, de datum omzetten en opnieuw invoeren in een nieuwe kollom met een datetime?
Enig idee hoe ik dit kan doen met een varchar? Een between gaat nu niet meer werken en de bekende datetime functies waarschijnlijk ook niet meer. Bijkomend probleem is natuurlijk het feit dat alles erin staat als 01-01-2008...
Hoe ga ik dit oplossen? Is er iemand die handig is hiermee? Of kan ik beter alle rijen ophalen, de datum omzetten en opnieuw invoeren in een nieuwe kollom met een datetime?
PHP hulp
22/12/2024 09:15:52Frank -
16/04/2008 14:25:00Terence Hersbach
16/04/2008 14:38:00laatste is het best denk ik, toch een kleine poging:
mocht het geen fouten opleveren en ook geen resultaten, dan moet je misschien de < en de > omdraaien
edit: zelf een klein typfoutje eruit gehaald (had = ipv -)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT * FROM tabel
WHERE
NOW() > DATE_SUB(
CONVERT(
CONCAT_WS(
'-',
SUBSTR(datumveld,6,4),
SUBSTR(datumveld,3,2),
SUBSTR(datumveld,0,2)
)
USING
DATE
),
INTERVAL
9 MONTH
)
AND
NOW() < DATE_SUB(
CONVERT(
CONCAT_WS(
'-',
SUBSTR(datumveld,6,4),
SUBSTR(datumveld,3,2),
SUBSTR(datumveld,0,2)
)
USING
DATE
),
INTERVAL
12 MONTH
)
WHERE
NOW() > DATE_SUB(
CONVERT(
CONCAT_WS(
'-',
SUBSTR(datumveld,6,4),
SUBSTR(datumveld,3,2),
SUBSTR(datumveld,0,2)
)
USING
DATE
),
INTERVAL
9 MONTH
)
AND
NOW() < DATE_SUB(
CONVERT(
CONCAT_WS(
'-',
SUBSTR(datumveld,6,4),
SUBSTR(datumveld,3,2),
SUBSTR(datumveld,0,2)
)
USING
DATE
),
INTERVAL
12 MONTH
)
mocht het geen fouten opleveren en ook geen resultaten, dan moet je misschien de < en de > omdraaien
edit: zelf een klein typfoutje eruit gehaald (had = ipv -)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach