Gå til innhold

konvertering til unixtimestamp


Anbefalte innlegg

Skrevet

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 :\

Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

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

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

WHOW har aldri tenkt på det på den måten før! Simpelthen genialt audunr :yes:

Skrevet

presterte å skriva noko feil her, alle tidspunkta vart setne til 0 :D

Korleis importerer eg ei rad (eller ein hel db for den del) inn i phpmyadmin?

Skrevet (endret)

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
Skrevet
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å

Skrevet

Du kan dog lage et ny felt med int eller bigint og sette denne til unix timestamp.

Det feltet du forandret nå var nok av typen timestamp, og ikke et int-felt.

 

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

Skrevet
hvorfor i all verden vil du ikke beholde vanlig dato? den er jo laget for nettopp dette?

nei, phpnuke versjonen av phpbb er med vanlig dato... men den vanlige versjonen skal visstnok ha unixtime

Skrevet
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)

Skrevet (endret)

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
Skrevet
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?

Skrevet
"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. ;)

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å
×
×
  • Opprett ny...