[php/mysql] Weergave datum aanpassen naar gewenst formaat

Pagina: 1
Acties:
  • 2.137 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nu worden in mijn mysql mijn datums standaard op "jaar maand dag" gezet (vb: 2005-04-23) hoe zorg ik ervoor dat hij standaard de belgische vorm neemt?

zijnde dag maand jaar. Want ik wil nu excels importeren met datums en nu doet dat ding hier vervelend omdat hij de datums niet volgens die japanse wijze wilt zetten(excel).

Ik zou dus graag de mysql aanpassen.

[ Voor 1% gewijzigd door Verwijderd op 04-09-2006 00:17 . Reden: vergeten volledige titel te zetten, verdorie: php mysql: datums in mysql dus ]


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 11:52

AW_Bos

Liefhebber van nostalgie... 🕰️

Gebruik je ook de DATETIME type op je veld?

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Je kunt ook gebruik maken van timestamps, dan kun je de gewenste datum outputten op de manier zoals jij wilt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CREATE TABLE `tblkalender` (
`id` int(11) NOT NULL auto_increment,
`teamId` int(11) NOT NULL default '0',
`matchnr` int(11) NOT NULL default '0',
`home` varchar(255) NOT NULL default '',
`guest` varchar(255) NOT NULL default '',
`datum` date NOT NULL default '0000-00-00',
`uur` varchar(255) NOT NULL default '',
`scoreHome` int(11) NOT NULL default '0',
`scoreGuest` int(11) NOT NULL default '0',
`verslag` text NOT NULL,
PRIMARY KEY (`id`)


Dit is de sql die ik exporteerde. Daar staat nu 0000-00-00

Dus als ik de tabel zou wissen en 0000-00-00 zou aanpassen in 00-00-0000 zou het dan moeten gaan?
effe testen dan

Ik heb de standaardwaarde 00-00-0000 gezet, dit lukt dus blijkbaar niet : de sql geeft als standaardwaarde in de records 2000-00-00 terug
(ik heb het niet over de output, ik heb het over de input vanuit excels, die in belgische vorm staan)

[ Voor 15% gewijzigd door Verwijderd op 04-09-2006 00:24 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Volgens mij kan dat helemaal niet. Wat je moet doen bij het ophalen van je data:

SQL:
1
SELECT date_format(datum, '%d-%m-%Y') AS datum FROM table


Of gebruik timestamps.

[ Voor 9% gewijzigd door XWB op 04-09-2006 00:26 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Titelfix:
[phpmysql] >> [php/mysql] Weergave datum aanpassen naar gewenst formaat


Overigens, de manier waarop het in de DB wordt opgeslagen heeft niets met de weergave van doen (0000-00-00 is dan ook gewoon een default value, en niet de specificatie van hoe het weergegeven/opgeslagen moet worden).

Wat jij wil is het representeren van data in een DateTime format (dat intern whatever kan zijn) naar een locale waarde (locale is hier het toverwoord ;) )
Hacku schreef op maandag 04 september 2006 @ 00:25:
Volgens mij kan dat helemaal niet. Wat je moet doen bij het ophalen van je data:

SQL:
1
SELECT date_format(datum, '%d-%m-%Y') AS datum FROM table
Ik zou je presentatielaag (PHP/HTML) het werk laten doen, daar is 'ie immers voor (het presenteren van je data) ;) Wat als je straks je website gaat inzetten op een US server waar je US weergaves wil (mm/dd/yyyy)? Ga je dan al je queries aanpassen? ;)
http://nl3.php.net/manual/en/function.date.php
En wat lost dat op? Kun je wat beargumenteren of moeten we het maar "blind" aannemen? ;)
Verwijderd schreef op maandag 04 september 2006 @ 00:13:
Nu worden in mijn mysql mijn datums standaard op "jaar maand dag" gezet (vb: 2005-04-23) hoe zorg ik ervoor dat hij standaard de belgische vorm neemt?

zijnde dag maand jaar. Want ik wil nu excels importeren met datums en nu doet dat ding hier vervelend omdat hij de datums niet volgens die japanse wijze wilt zetten(excel).

Ik zou dus graag de mysql aanpassen.
PHP? MySQL? Excel? :? Belgisch? Japans? Make up your mind :Y) Waar gaat het nou over?

Voor de duidelijkheid: Dat je in MySQL JJJJ-MM-DD ziet wil niet zeggen dat het zo opgeslagen is. JJJJ-MM-DD is enkel een weergave van de tool die je gebruikt om je records weer te geven (MySQL Query Browser? PHP?).

[ Voor 93% gewijzigd door RobIII op 04-09-2006 00:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mja, je hebt gelijk. Maar het is enkel jammer dat er daar geen eenvoudige keuze voor is in mysql. Misschien komt dit er in de toekomst :)


Mja, ik heb ellenlange kalenderlijsten in excel gekregen met de belgische vorm van de datum. En als ik dat in mysql voeg kloppen de ingevoerde datums niet. Ik ben nu aan het proberen de datums van men windows anders te laten weergeven voor het invoeren van de excellijst. Datum en tijd aanpassen in excel zelf werkt niet, want bij het opnieuw openen ervan komt het weer in de belgische vorm.

[ Voor 59% gewijzigd door Verwijderd op 04-09-2006 00:42 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 04 september 2006 @ 00:40:
Mja, je hebt gelijk. Maar het is enkel jammer dat er daar geen eenvoudige keuze voor is in mysql. Misschien komt dit er in de toekomst :)
Je begrijpt het niet. Je wil helemaal niet dat MySQL je datum gaat "formatteren" naar een bepaalde locale. Je wil dat je database datetime values kan opslaan en dat doet 'ie prima. Je wil je presentatielaag de presentatie van de datetime value laten afhandelen, ongeacht hoe die in de DB staat (en da's ook 0,0 interessant). Behalve "hacks" zoals Hacku suggesteerd zal er dus "in de toekomst" ook niks voor komen :Y)

Don't get me wrong; het is prima mogelijk met MySQL, maar dat moet je niet willen ;)

[ Voor 13% gewijzigd door RobIII op 04-09-2006 00:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Verwijderd schreef op maandag 04 september 2006 @ 00:40:
Mja, ik heb ellenlange kalenderlijsten in excel gekregen met de belgische vorm van de datum. En als ik dat in mysql voeg kloppen de ingevoerde datums niet. Ik ben nu aan het proberen de datums van men windows anders te laten weergeven voor het invoeren van de excellijst. Datum en tijd aanpassen in excel zelf werkt niet, want bij het opnieuw openen ervan komt het weer in de belgische vorm.
Exporteer je excel naar een .text/.csv bestand. Lees dat in. Zet de datums "normaal". Insert ze in de database.

Zorg dat je dat tooltje bij de hand hebt voor vervolg updates.

Laat de datums aan de voorkant mooi "Belgisch" op je scherm komen :)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het is gelukt met mijn windows aan te passen ( de windows date en time functie )

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Wat als je straks je website gaat inzetten op een US server waar je US weergaves wil
Dat is iets wat je op voorhand wel zal weten. Als je het bij 1 taal houdt lijkt het me zo geen probleem.
En wat lost dat op? Kun je wat beargumenteren of moeten we het maar "blind" aannemen?
Ik maak vaak gebruik van Smarty en dan kan je iets als dit doen: $datum|date_format:"%d-%m-%Y"
Als je site meertalig is en je gebruik maakt van een taalfile oid doe je gewoon: $datum|date_format:$Language['dateformat']
Behalve "hacks" zoals Hacku suggesteerd
Waar heb ik het nou over hacks?

[ Voor 7% gewijzigd door XWB op 04-09-2006 00:59 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik noem het een "hack" ;) En mind the quotes. Het is niet echt een hack, maar het is gewoon werk dat je DB niet hoort te doen maar je presentatielaag ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
maar het is gewoon werk dat je DB niet hoort te doen maar je presentatielaag
Daarom dat ik ook timestamps naar boven haalde, omdat ik het meestal doe zoals hierboven gezegd. Die date_format is iets van vroeger dat nog steeds in mijn geheugen rondzweeft ;)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 17-08-2024
omg piele's, er is _niks_ mis met DATE_FORMAT. Als er iets mis mee is dan is het dat het prolly sneller is dan met PHP te gaan prutsen om een SQL DATETIME veld om te gaan zetten naar je eigen formaat.

Ik bedoel wat is het verschil tussen smarty laten bepalen wat de datum wordt dmv:
$datum|date_format:'%Y-%m-%d'
of SQL dmv:
DATE_FORMAT(`datum`, "%Y-%m-%d")

Beide kan je veranderen en jij kan mij niet wijsmaken dat jij bij elke datum in je template letterlijk aangeeft in welk formaat hij moet. Dat doe je prolly met een variabele, en voila je probleem in SQL ook opgelost.

Timestamps in je database zijn een slecht idee, ten eerste valt er moeilijk mee te rekenen. Stel jij wilt de records van 20 dagen geleden. Dan zul je eerst een timestamps moeten maken etc etc. Terwijl je met SQL gewoon kan zeggen dat je de records van 20 dagen terug wilt hebben. Het gaat erom dat timestamps in een database meer problemen geven dan oplossen.

Ok je kan SQL een timestamp laten maken van de datetime die is opgeslagen om vervolgens met smarty weer het omgekeerde te doen. Maar imho moet je timestamps zoveel mogelijk vermijden :)

0x7F


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Tepel schreef op maandag 04 september 2006 @ 12:51:
omg piele's, er is _niks_ mis met DATE_FORMAT. Als er iets mis mee is dan is het dat het prolly sneller is dan met PHP te gaan prutsen om een SQL DATETIME veld om te gaan zetten naar je eigen formaat.

Ik bedoel wat is het verschil tussen smarty laten bepalen wat de datum wordt dmv:
$datum|date_format:'%Y-%m-%d'
of SQL dmv:
DATE_FORMAT(`datum`, "%Y-%m-%d")

Beide kan je veranderen en jij kan mij niet wijsmaken dat jij bij elke datum in je template letterlijk aangeeft in welk formaat hij moet. Dat doe je prolly met een variabele, en voila je probleem in SQL ook opgelost.
Je mist het punt. Je hebt niet voor niets een presentatielaag. Die is daarvoor. Een database layer dient enkel en alleen om data op te slaan en op te halen, that's it. Formattering van je gegevens doe je in je presentatielaag.
Of laat je SQL ook het volgende teruggeven:
SQL:
1
Select '<h1>' + article.title + '</h1>' as title, ... from article where article.id=...

:?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1