[MySQL] timestamp(4) blijf 0000

Pagina: 1
Acties:

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 18-08 10:23

apNia

Schreeuwen en Nibbits eten!

Topicstarter
Heb er via de search niks over kunnen vinden.. =Z
Als ik m'n timestamp van 4 digits (YYMM dus) update krijg ik daar standaard 0000 voor in m'n record. Terwijl als ik update met de mySQL functie now() pakt ie wel netjes 0307 in m'n record.

Ik heb echt geen idee hoe het kan.. =Z

iemand?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Dus jij vindt het vreemd dat, als je een veld niet vult, dat er dan geen gegevens in komen te staan? Of mis ik nou iets? Je wil graag dat, ook al vul jij niks in, er gegevens in je veld komen te staan? Dat lijkt me standaard namelijk niet echt logisch...?

[ Voor 12% gewijzigd door OZ-Gump op 25-07-2003 14:59 ]

My personal website


  • apNia
  • Registratie: Juli 2002
  • Laatst online: 18-08 10:23

apNia

Schreeuwen en Nibbits eten!

Topicstarter
nee? ik update 'm natuurlijk wel met een waarde anders dan 0000.. zeg bijvoorbeeld 0601 om wat te noemen...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Een TIMESTAMP(4) is een TIMESTAMP(14) met een display length van 4. Wil je die vullen zul je nog steeds een geldige timestamp hierin moeten zetten (20030307.... oid).

Het heeft dus niet zoveel zin die kortere timestamps.. kun je beter een integer/char gebruiken ;)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Probeer hem eens te updaten met een volledige datum, dan zal hij er zelf 't jaar en de maand wel uit halen. Hoe je het ook wendt of keert, hij verwacht een datum, en 0601 is dat niet. Je kunt wel op die manier werken door er een string van te maken...

My personal website


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

@Bosmonster: geen integer, want dan raak je de 0 kwijt als je bijvoorbeeld 0601 gebruikt. Als je er een string van maakt behoud je wel alle gegevens ;)

[ Voor 10% gewijzigd door OZ-Gump op 25-07-2003 15:03 ]

My personal website


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

OZ-Gump schreef op 25 juli 2003 @ 15:03:
@Bosmonster: geen integer, want dan raak je de 0 kwijt als je bijvoorbeeld 0601 gebruikt. Als je er een string van maakt behoud je wel alle gegevens ;)
Ja dat edit ik net :) char veld dan als je maand wilt opslaan..

Maar tenzij je een verjaardagskalender aan het maken bent komt dit niet zoveel voor (en zelfs dan zou ik ook het geboortejaar opslaan ;)).

Meestal kun je dus een INT nemen en zoiets opslaan:

20030307

Dan kun je ook nog eens mooi sorteren.

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 18-08 10:23

apNia

Schreeuwen en Nibbits eten!

Topicstarter
hij wil idd een volledigere timestamp.. zelfs 060101 werkt al.. waarschijnlijk wilt ie ondanks de 4 digit timestamp dan toch iig een volledige date... thanks guys =)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Snap het nut van het gebruiken van een TIMESTAMP(4) nog steeds niet helemaal... waar hebbie dat in hemelsnaam voor nodig? :P

Zoals we hierboven al paar keer zeggen zijn daar dus veel betere types voor. TIMESTAMP is alleen handig als soort van insert/update-stamp op je records en daar istie ook voor bedoeld. Niet om data op te slaan. Daar heb je DATE/TIME datatypes voor en eventueel een INT/CHAR veld.

[ Voor 4% gewijzigd door Bosmonster op 25-07-2003 15:12 ]


Verwijderd

apNia schreef op 25 juli 2003 @ 15:06:
hij wil idd een volledigere timestamp.. zelfs 060101 werkt al.. waarschijnlijk wilt ie ondanks de 4 digit timestamp dan toch iig een volledige date... thanks guys =)
pak je de volledige date en stel je in je dbase in dat die varchar (of whatever) max. 4 mag zijn???

  • apNia
  • Registratie: Juli 2002
  • Laatst online: 18-08 10:23

apNia

Schreeuwen en Nibbits eten!

Topicstarter
Bosmonster schreef op 25 July 2003 @ 15:11:
Snap het nut van het gebruiken van een TIMESTAMP(4) nog steeds niet helemaal... waar hebbie dat in hemelsnaam voor nodig? :P

Zoals we hierboven al paar keer zeggen zijn daar dus veel betere types voor. TIMESTAMP is alleen handig als soort van insert/update-stamp op je records en daar istie ook voor bedoeld. Niet om data op te slaan. Daar heb je DATE/TIME datatypes voor en eventueel een INT/CHAR veld.
nahja ik gebruik de 4 digits voor creditcard expiration.. zal misschien wel betere oplossing voor zijn, maar aangezien mySQL dan met functies als MONTH() en andere datumfuncties overweg kan met de timestamp fieldtype (wat ik nu overigens nog niet nodig heb, maar just in case) kreeg dat m'n voorkeur boven een gewone INT

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

ala 200304 dus... wat ik al dacht :P MEDIUMINT(6). Wel handig bij CC gegevens om het gehele jaar op te slaan overigens ;)

Enniwee.. je kent het karakter van een timestamp wel he? Dat als je hem niet opgeeft die hem overschrijft met de huidige datum? (Tenzij er nog meer timestamps in je query staan). Dit maakt het gedrag van een timestamp dermate ondoorzichtig dat ik het nooit en te nimmer zou gebruiken voor belangrijke gegevens als CC-gegevens..

Maar goed.. je moet het zelf weten, maar lullig als je er halverwege je project achterkomt ;)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waarom wordt het niet gewoon als date-veld opgeslagen? Er zijn hele mooie formatterings-functies om de datums zo uit te spugen als je zelf wilt. Maar voor opslag en berekeningen zijn de date-velden het handigst en netst, imho.
Pagina: 1