Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL] Datum maken van varchar

Pagina: 1
Acties:

  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
ik werk in een databasetable met tientallen duizend records, maar de datum field is hier ooit op een rare manier door de maker van de table aangemaakt:

een varchar (8) met daarin alles opgeslagen als formaat d.m.y

bijv. 17.02.2008

als ik nu probeer alles van de laatste week te selecteren kan ik geen gebruik maken van de handige datum functies die in mysql zitten gebakken, bijv. met "SELECT * from $table where day BETWEEN CURDATE() AND DATE_ADD(curdate(),INTERVAL 7 day);"

ik gebruik dus niet de mysql datumindeling, dus voor mij werkt dit hier boven niet - moet ik nu voor alle records n nieuwe datum field aanmaken met daarin de correcte datuminfo? of is er een mogelijkheid waardoor ik in een mysql query alsnog de laatste week kan selecteren?

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:06

BCC

Kun je niet beter een migratie schrijven die de datas omzet? En een extra column aanmaken die default naar NOW()? Dan los je het probleem op ipv er omheen te hacken.

[ Voor 50% gewijzigd door BCC op 17-02-2008 14:13 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:43

MueR

Admin Devschuur® & Discord

is niet lief

Inderdaad, extra DATE(TIME) kolom maken, en een conversie scriptje draaien. Verder wil ik niet zeiken, maar met
SQL:
1
SELECT * FROM $table WHERE day BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 7 DAY)
ga je enkel de komende week zien.

Anyone who gets in between me and my morning coffee should be insecure.


  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
jeetje nou, wat had die maker gedacht? een stukje voor slecht programmeren :p? Oplossing is al gegeven zie ik.

http://www.softfocus.be/


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Het is makkelijk oordelen over de bedenker van dat datumveld probleem, maar vergeet niet dat oudere versies van mysql niet al te beste datumondersteuning hadden. Nog steeds niet blijkbaar, als je een tekst die zo overduidelijk een datum is niet met 1 functiecall kan omzetten naar een echte datum.

Kan dus wel vanaf versie 4.1.1:
http://dev.mysql.com/doc/...html#function_str-to-date

edit:
eerst googlen, dan blaten :)

[ Voor 22% gewijzigd door bigbeng op 18-02-2008 09:48 ]


  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
thnx allemaal :) ik heb alsnog een timestamp veld aangemaakt en gelukkig is de query alleen relevant voor nieuwe artikelen die de voorgaande week worden toegevoegd,.. dat betekent dat over 6 dagen de boel gewoon alsnog werkt :)

thnx voor t meewerken,. ow en ja de query had ik niet goed, dat moest deze worden:

SELECT id FROM tabel WHERE timestamp >=
SUBDATE(NOW(), INTERVAL 7 DAY)

  • Pul
  • Registratie: Februari 2008
  • Laatst online: 06-08 13:54

Pul

Ik zou eerst de structuur kopieëren naar `tabel_nieuw` en het veld day veranderen naar een date veld, dan deze query uitvoeren. je moet natuurlijk wel eerst veld1, enz enz vervangen door de andere velden...:
INSERT INTO `tabel_nieuw` (`veld1`, `veld2`, `day`)
SELECT `veld1`, `veld2`, STR_TO_DATE(`day`, '%d-%m-%Y')
FROM `tabel_oud`;
Pagina: 1