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

MySQL Timestamp default waarde

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

  • xantos
  • Registratie: Juni 1999
  • Niet online
Ik heb een veld ('aangemaakt_op') van het type 'Timestamp' met een default value '2000-01-01 00:00:00'.

Een describe van deze tabel laat zien dat de default waarde '2000-01-01 00:00:00' is.

Zodra ik met mysqldump deze tabel ga dumpen krijg ik het volgende te zien:
`aangemaakt_op` timestamp NOT NULL default '1999-12-31 23:00:00',

Opeens zit er dus een uur tijdsverschil in. Ik snap niet waar deze vandaan komt.

Wie wel? :?

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

UTC <--> CET timezone. Ik denk dat MySQL datums als UTC opslaat. Bij een dump krijg je ruwe DB info. Bij een select query wordt rekening gehouden met /etc/timezone configuratie.

If it isn't broken, fix it until it is..


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 20-11 19:35
Niet de oplossing voor je vraag maar een advies: Unix Timestamp. Stuk makkelijker mee te werken.

  • xantos
  • Registratie: Juni 1999
  • Niet online
Niemand_Anders schreef op donderdag 24 januari 2008 @ 16:30:
UTC <--> CET timezone. Ik denk dat MySQL datums als UTC opslaat. Bij een dump krijg je ruwe DB info. Bij een select query wordt rekening gehouden met /etc/timezone configuratie.
Het gaat niet eens om de select.

- Ik doe een ALTER TABLE om de default waarde aan te passen
- Draai mysqldump om een dump te maken
- Zet deze dump terug
- Doe een describe op de tabel en de datum is verkeerd loopt een uur achter.

Verwijderd

MuddyMagical schreef op donderdag 24 januari 2008 @ 16:33:
Niet de oplossing voor je vraag maar een advies: Unix Timestamp. Stuk makkelijker mee te werken.
Pas op wat je zegt hoor, met zo'n statement krijg je hele volksstammen actief om te claimen dat het wel of niet goed is. ;)

offtopic:
Ik vind dat je gelijk hebt trouwens

[ Voor 5% gewijzigd door Verwijderd op 24-01-2008 16:44 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
xantos schreef op donderdag 24 januari 2008 @ 16:41:
Het gaat niet eens om de select.
Punt blijft dat je het probleem hebt om niet bij elke query dezelfde timezone gebruikt wordt cq. rekening mee gehouden wordt. ;)

{signature}


  • xantos
  • Registratie: Juni 1999
  • Niet online
Voutloos schreef op donderdag 24 januari 2008 @ 16:54:
[...]
Punt blijft dat je het probleem hebt om niet bij elke query dezelfde timezone gebruikt wordt cq. rekening mee gehouden wordt. ;)
Ok thx, maar dat is mijn probleem niet. Laten we het even niet meer over queries hebben dat zit wel goed..

Ik wil gewoon weten waarom het dump commando een tabelstructuur genereerd met een andere default waarde.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

offtopic:
Pas je wel even op met dat datatype? TIMESTAMPs worden voor zover ik weet bij elke update automatisch aangepast naar de huidige systeemtijd, tenzij anders aangegeven staat in de MySQL-configuratie. Als je datums wil opslaan ben je beter af met een DATETIME type, of anders inderdaad iets in het UNIX-formaat.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
xantos schreef op donderdag 24 januari 2008 @ 17:02:
[...]


Ok thx, maar dat is mijn probleem niet. Laten we het even niet meer over queries hebben dat zit wel goed..
Mijn opmerking slaat niet enkel op jouw queries. :>

[ Voor 68% gewijzigd door Voutloos op 24-01-2008 17:14 ]

{signature}


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 20-11 19:35
Verwijderd schreef op donderdag 24 januari 2008 @ 16:42:
[...]

Pas op wat je zegt hoor, met zo'n statement krijg je hele volksstammen actief om te claimen dat het wel of niet goed is. ;)

offtopic:
Ik vind dat je gelijk hebt trouwens
Daarom ook een advies. Ik ben niet van plan om per ongeluk een flamewar te starten. ;)

  • xantos
  • Registratie: Juni 1999
  • Niet online
Voutloos schreef op donderdag 24 januari 2008 @ 17:13:
[...]

Mijn opmerking slaat niet enkel op jouw queries. :>
Voutloos,
Misschien kun je je opmerking dan nog eens toelichten. Ik snap 'm namelijk niet..

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
xantos schreef op donderdag 24 januari 2008 @ 21:15:

Voutloos,
Misschien kun je je opmerking dan nog eens toelichten. Ik snap 'm namelijk niet..
Ik vermoed dat Voutloos bedoelt dat niet alleen bij select queries conversies op kunnen treden maar ook bijvoorbeeld bij dumps maken / inlezen. Kijk eens wat er in je dumpfile staat en wat daarmee gebeurt bij het inladen :)

[ Site ] [ twitch ] [ jijbuis ]


  • xantos
  • Registratie: Juni 1999
  • Niet online
Probleem opgelost.. Als ik de volledige dumpfile weer inlees op de server zet ie alles netjes terug zoals het hoort. Komt natuurlijk ook door de set commando's aan het begin van het bestand.

code:
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
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


USE `testdatabase`;

DROP TABLE IF EXISTS `TEST`;
CREATE TABLE `TEST` (
  `abo_id` int(11) NOT NULL auto_increment,
  `org_id` int(11) NOT NULL,
  `aangemaakt_op` timestamp NOT NULL default '1999-12-31 23:00:00',
  `aangemaakt_door` varchar(255) NOT NULL,
  PRIMARY KEY  (`abo_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


Toch bedankt allemaal!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20-11 18:46

Patriot

Fulltime #whatpulsert

-NMe- schreef op donderdag 24 januari 2008 @ 17:12:
offtopic:
Pas je wel even op met dat datatype? TIMESTAMPs worden voor zover ik weet bij elke update automatisch aangepast naar de huidige systeemtijd, tenzij anders aangegeven staat in de MySQL-configuratie. Als je datums wil opslaan ben je beter af met een DATETIME type, of anders inderdaad iets in het UNIX-formaat.
Dat is gewoon per veld aan te geven, je moet dan echter wel een default clausule meegeven, anders gaat hij standaard naar DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. Met het gevolg dat hij automatisch geinitialiseerd wordt op de huidige timestamp, en bij een update ook de huidige timestamp krijgt.

Meer informatie vind je in de MySQL TIMESTAMP documentatie

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dat zou voor mij een extra reden zijn om toch gewoon DATETIME te gebruiken als je graag dat formaat wil. ;) Dat gaat namelijk by default goed.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1