Hoe kan ik de datumfuncties gebruiken op een varchar?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arjan Kapteijn

Arjan Kapteijn

16/04/2008 14:12:00
Quote Anchor link
Doordat 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?
 
PHP hulp

PHP hulp

19/04/2024 16:29:30
 
Frank -

Frank -

16/04/2008 14:25:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
  CONCAT(
  SUBSTRING('01-01-2008', 7, 4),
  '-',
  SUBSTRING('01-01-2008', 4, 2),
  '-',
  SUBSTRING('01-01-2008', 1, 2)
  )
AS iso_datum
 
Terence Hersbach

Terence Hersbach

16/04/2008 14:38:00
Quote Anchor link
laatste is het best denk ik, toch een kleine poging:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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
    )
    


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.