Gå til innhold

konvertering til unixtimestamp


Anbefalte innlegg

har ein phpbb database med rundt 100 brukarar, eg skal oppgradere forumet, og då er det naudsynt å konvertere user_regdate kolonna frå vanleg dato til unix timestamp.

Eg veit om alle konverterane rundt om, men det eg er på utkikk etter er noko som kan konvertera heile stasen på ei gong.

 

Er det mogleg å laga noko script elns? Har posta i database kategorien, men der er det knapt liv :\

Lenke til kommentar
Videoannonse
Annonse

No problem!

 

// hente informasjon om tabellen
$query = mysql_query("SELECT * FROM brukere");

// gjør at det samme skjer for hver post
$null = "0";
while($null < mysql_numrows($query)) {

// hente gammel dato
$id = mysql_result($query,$null,"id");
$gammel_dato = mysql_result($query,$null,"dato");

// vet ikke hvordan formatet er på den "vanlige datoen" 
// du refererer til. kanskje du klarer å snekre det sammen
// ut fra det du kan lese om explode og mktime?

// sette inn ny dato
mysql_query("UPDATE brukere SET dato = '".$ny_dato."' WHERE id = '".$id."');

// avslutte løkke
}

 

edit: mulig du må gjøre noe med kolonnetype - int(11) er vel tilstrekkelig

Endret av fjartan
Lenke til kommentar

mysql_query("UPDATE brukere SET user_regdate = UNIX_TIMESTAMP(user_regdate)");

 

Mulig jeg er vel optimistisk, men burde ikke dette fungere? Du må vel forandre kolonnetype først til et eller annet som takler både datoformatet og heltall.

 

MVH Audun

Lenke til kommentar

har selvfølgelig backup :D

 

edit: men eg får feilmelding om feil syntaxen når eg skriv inn

 

mysql_query("UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate)");

Endret av ratata
Lenke til kommentar
mysql_query("UPDATE brukere SET user_regdate = UNIX_TIMESTAMP(user_regdate)");

 

Mulig jeg er vel optimistisk, men burde ikke dette fungere? Du må vel forandre kolonnetype først til et eller annet som takler både datoformatet og heltall.

 

MVH Audun

idet du forandrer kolonnetype vil innholdet forkludres og følgelig vil det ikke gå

Lenke til kommentar
har selvfølgelig backup :D

 

edit: men eg får feilmelding om feil syntaxen når eg skriv inn

 

mysql_query("UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate)");

Fordi mysql_query er en PHP funksjon. Du må plukke ut SQL spørringen og bruke bare den:

 

UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate)

Lenke til kommentar

Haha, jeg leste feil (tenkte omvendt). Glem alt som står under. :lol:

 

Hmm, er det bare meg eller har dere feilinformert hele veien? Så vidt jeg vet så brukes UNIX_TIMESTAMP til å hente ut timestamp-verdien til en kolonne med datatype f.eks. DATETIME, slik at man slipper å styre med det i PHP.

 

Bruk et par av spørringene over her og bytt ut UNIX_TIMESTAMP med FROM_UNIXTIME, som setter inn verdiene fra et unix-timestamp inn i en kolonne med en dato-datatype.

 

Uff, det var uforståelig.

 

Prøv noe á la dette:

* Gjør om navnet på kolonnen user_regdate til user_olddate

* Lag en ny kolonne med datatype DATETIME med navnet user_regdate

* Kjør denne PHP-koden:

<?php

$result = mysql_query("SELECT * FROM `nuke_users`");

while($row = mysql_fetch_object($result))
{
mysql_query("UPDATE `nuke_users` SET `user_regdate` = FROM_UNIXTIME(`$row->olddate`) WHERE `id` = '$row->id'");
}

?>

* Slett kolonnen user_olddate

 

Tror det skal funke rimelig bra?

Edit: lagde en PHP-snutt isteden. Tror den skal funke enda bedre. :p

Endret av Lokaltog
Lenke til kommentar
Hmm, er det bare meg eller har dere feilinformert hele veien? Så vidt jeg vet så brukes UNIX_TIMESTAMP til å hente ut timestamp-verdien til en kolonne med datatype f.eks. DATETIME, slik at man slipper å styre med det i PHP.

"frå vanleg dato til unix timestamp" <--- er det ikke akkurat det han er ute etter?

Lenke til kommentar
"frå vanleg dato til unix timestamp" <--- er det ikke akkurat det han er ute etter?

Misforsto hele greia jeg! Beklager! :D

 

Spørsmål til trådstarter: Hvilken datatype er kolonnen med dato nå? Er det VARCHAR eller noe slikt, eller er det et skikkelig datoformat? Hvis det er et skikkelig datoformat, så bruk heller UNIX_TIMESTAMP(kolonne) enn å forandre datatypen til INT eller VARCHAR med unix-timestamp'en i. Mye mer fleksibelt og effektivt å bruke en datatype som er beregnet på datoer. ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...