[PHP MYSQL] format datum naar UNIXTIME

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BasXcore
  • Registratie: April 2002
  • Laatst online: 18-04 08:59
Ik ben beginner met PHP en MySQL. Ik heb een database gevuld met datums geformateerd als YYYY-MM-DD . Deze wil ik uit de MySQL halen, en dan formateeren als een UNIX TIME STAMP.

Dit wil ik doen zodat ik kan gaan rekenen met de uitkomst van TIME(). Ik wil rekenen met de laatste datum uit de tabel. Mijn query is zo opgebouwt:

PHP:
1
2
3
4
5
6
$query="SELECT * FROM www_gigdates ORDER BY date DESC";
$result=mysql_query($query);

$i=0;
$date=mysql_result($result,$i,"date");
echo $date; //datum notatie in YYYY-MM-DD


Ik ben al druk bezig geweest met de UNIX_TIMESTAMP funcite van MySQL om de informatie direct als timestamp uit mijn database te krijgen. Maar dat levers mij altijd geen waarde op.

Kan iemand mij opweg helpen.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Move naar Programming

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

zie je ook 'niets' als je SELECT UNIX_TIMESTAMP(`date`) FROM www_gigdates in bijv. phpMyAdmin uitvoert ?

Voldoet het datum veld aan de voorwaarden ?
date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD.
?

date is vziw overigens een reserved word, je kan er misschien beter log_date oid van maken ...

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Wat je kunt doen:

• Gebruik maken van de Unix_Timestamp() functies in MySQL en in de databaseschema de native MySQL-Timestamp gebruiken. (En dus in PHP gaan formatten). Voorbeelden van die MySQL functies vind je hier.
• Als je bovenstaande doet je die waarden uit de database door mktime() halen om in PHP een Unix Timestamp te krijgen.
• Je kunt je tijden in MySQL ook als Integer opslaan. En dan sla je dus vanuit PHP de Unix Timestamp daarin op. Dan hoef je ook niet heen en weer te converteren. Dit wordt wel vaak toegepast. Ook zou je er nog mee kunnen rekenen in MySQL met een van de Datum/Tijd functies van MySQL.

Voorbeelden van dit alles zijn vast en zeker in de GoT-search te vinden en in de duizenden PHP/MySQL tutorials en/of boeken.

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
PHP:
1
2
3
4
5
6
$query = "SELECT <definieer gewenste velden dan weet je wat je binnentrekt en in welke volgorde> FROM www_gigdates ORDER BY date DESC LIMIT BY 0,1";
$result = mysql_query($query);

$kol = mysql_fetch_row($result);
$date= $kol[ een int ]; // 0= eerste veld uit query, 1= tweede veld etc...
echo $date; //datum notatie in YYYY-MM-DD

Acties:
  • 0 Henk 'm!

  • Wao
  • Registratie: Juni 1999
  • Laatst online: 03-12-2024

Wao

Het ligt een beetje aan je databaseschema.

Als je voor het "date" veld een het speciale DATETIME type gebruikt, kan je de standaard functies van MySQL gebruiken om het "date" veld om te zetten naar een unix timestamp met de functie UNIX_TIMESTAMP(`date`). Als je echter een ander type veld gebruikt voor "date", dan ligt het aan hoe je het opslaat in dit veld.

De voorwaarden voor UNIX_TIMESTAMP(veld) zijn:
date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD.
Als je dus je datum bijvoorbeeld opslaat als een VARCHAR string "2006-12-30", dan werkt de functie dus bijvoorbeeld niet, maar als het wordt opgeslagen als een integer 20061230, dan werkt de functie wel.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

@Wao: dat zeg ik ;)

Acties:
  • 0 Henk 'm!

  • Wao
  • Registratie: Juni 1999
  • Laatst online: 03-12-2024

Wao

Haha, sorry, had ik niet gelezen! Nouja, is het nog duidelijker. :)

Acties:
  • 0 Henk 'm!

  • BasXcore
  • Registratie: April 2002
  • Laatst online: 18-04 08:59
Dank jullie wel voor de uitleg. Met de UNIX_TIMESTAMP en date tussen ' werkt het. Dit mijn code en functioneerd perfect. Het script haalt de nieuwste tijd uit de tabel en rekend het verschil in dagen uit vanaf vandaag. Ik zal het date veld nog hernoemen naar iets anders.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$query="SELECT UNIX_TIMESTAMP(`date`) FROM www_gigdates ORDER BY date DESC";
$result = mysql_query($query); 

mysql_close();

$kol = mysql_fetch_row($result); 
$date= $kol[0];
// get current unix timestamp
$today = time();

$difference = $date - $today;
if ($difference < 0) $difference = 0;

$days_left = floor($difference/60/60/24);
echo "".$days_left." days to next event";

Acties:
  • 0 Henk 'm!

  • Wao
  • Registratie: Juni 1999
  • Laatst online: 03-12-2024

Wao

Je zou ook deze query kunnen gebruiken:

SQL:
1
2
3
4
5
SELECT DATEDIFF(`date`, NOW()) as verschil 
FROM www_gigdates 
ORDER BY `date` 
DESC 
LIMIT 1


Dan heb je gelijk in de resultset het verschil in dagen tussen 2 datums, scheelt weer PHP code! Plus door het gebruik van de LIMIT zorg je er voor dat de resultset niet onnodig groot wordt als er meerdere entries in www_gigdates zitten.

Succes verder met ontwikkelen!
Pagina: 1