[PHP] datum uit mysql timestamp halen

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo!

Ik heb een probleem met mijn timestamp (tenminste als het al een echte timestamp is)...

de data die in de database staat is bijv.
20040723162003 (omgerekend datum :
2004-07-23 16:20:03

alleen wanneer ik hem opvraag:

$row[11] = date("U", $row[1]);
$row[2] = date("Y F, j, g:i a", $row[11]);

of

$year = substr($row[1], 0,4);
$month = substr($row[1], 5-6);
$day = substr($row[1], 7-8);
$hour = substr($row[1], 9.10);
$minute = substr($row[1], 11,12);
$second = substr($row[1], 12,13);

dan krijg ik data als

2004-8-8 10028:028:28
of
19-Jan-2038 04:14

eruit...

dit kan niet kloppen

het zoekscript waarvoor ik dit gebruik is te vinden op www.dijksma.net/page/search.php


een stuk script is:

PHP:
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
31
32
33
include "sql.php";
if($_SERVER['REQUEST_METHOD'] == "POST") {
  $formtitle   = $_POST['formtitle'];
  $formcontent = $_POST['formcontent'];
  if(strlen($formtitle) < 3) {
    echo "<center>je moet meer invoeren <br> Klik <a href=\"$PHP_SELF\">hier</a> om het nog eens te proberen.</center>\n";
    }
  else {
    $sqltitle  = mysql_query("SELECT feed_id,timestamp,link,title,content FROM px_items WHERE title LIKE '%".$_POST['formtitle']."%' LIMIT 20") or die (mysql_error());
/* ---------+---------------+------+-----+---------+----------------+
| Field     | Type          | Null | Key | Default | Extra          |
+-----------+---------------+------+-----+---------+----------------+
| id        | int(11)       |      | PRI | NULL    | auto_increment | 
| feed_id   | int(11)       |      |     | 0       |                | = row[0]
| timestamp | timestamp(14) | YES  |     | NULL    |                | = row[1]
| link      | text          | YES  |     | NULL    |                | = row[2]
| title     | varchar(250)  | YES  | MUL | NULL    |                | = row[3]
| content   | text          | YES  |     | NULL    |                | = row[4]
| dcdate    | text          | YES  |     | NULL    |                |
| dccreator | text          | YES  |     | NULL    |                |
| dcsubject | text          | YES  |     | NULL    |                |
| read      | tinyint(4)    | YES  |     | NULL    |                |
+-----------+---------------+------+-----+---------+-------------- */
    while ($row = mysql_fetch_array($sqltitle, MYSQL_NUM)) {
      echo "  <tr>\n";
      echo "    <td>\n";
      echo "      <span class=\"news_title\"><a href=\"".$row[2]."\"><b>".$row[3]."</b></a></span><br>\n";
      if($row[4]) {
        echo "      <span class=\"news_title\">".$row[4]."<br></span>\n";
        }

      $row[11] =  date("U", $row[1]);
      $row[2] =  date("Y F, j, g:i a", $row[11]);



Ik hoop dat iemand me kan helpen!!!

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:49

DizzyWeb

Ondertiteld

MySQL timestamps zijn anders dan de unix timestamps die PHP gebruikt.

Acties:
  • 0 Henk 'm!

  • MJV
  • Registratie: Mei 2003
  • Laatst online: 15:07

MJV

Date() pakt alleen unix timestamps. En dat is die mysql timestamp niet.

Het is aan te raden om niet met date() te werken maar met substr() gewoon het jaar, maand, dag, etc uit de row te halen.

Dus bijv.
$jaar = substr($row[1],0,4);

[ Voor 10% gewijzigd door MJV op 10-10-2004 13:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Er bestaat ook nog zoiets als een mysql functie om een mysql timestamp om te zetten naar een unix timestamp. Dat kun je in de manual vinden onder date/time functions.

Acties:
  • 0 Henk 'm!

  • MJV
  • Registratie: Mei 2003
  • Laatst online: 15:07

MJV

Verwijderd schreef op 10 oktober 2004 @ 13:06:
Er bestaat ook nog zoiets als een mysql functie om een mysql timestamp om te zetten naar een unix timestamp. Dat kun je in de manual vinden onder date/time functions.
http://dev.mysql.com/doc/...e_and_time_functions.html dus.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt!

helaas werkt dit niet.

$year = substr($row[1], 0,4);
$month = substr($row[1], 5-6);
$day = substr($row[1], 7-8);
$hour = substr($row[1], 9.10);
$minute = substr($row[1], 11,12);
$second = substr($row[1], 12,13);

dan krijg ik een datum eruit als "2004-8-8 10028:028:28"

ik dacht dat: als ik eerst alles omzet naar epoch timestamp in het script en dan naar normale timestamp. MIsschien dat het dan werkt. Echter weet ik niet hoe dit moet... iemand anders heeft ooit dit script voor me gemaakt.

heb je een idee of dit kan en hoe dan?

Acties:
  • 0 Henk 'm!

  • MJV
  • Registratie: Mei 2003
  • Laatst online: 15:07

MJV

Kijk eens goed naar de substr() functie. http://nl2.php.net/manual/nl/function.substr.php

Het laatste getal is de lengte, dat klopt niet bij de seconden en minuten lijkt me.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt DutchBlood Ik lees het even door!

Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Probeer het volgende eens als je met datums aan de slag gaat:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// maak een timestamp
// deze timestamp is een long integer
// die het aantal seconden bevat tussen de Unix Epoch (January 1 1970)
// en de huidige server tijd

$nu = mktime();

// stop $nu in je db

// haal timestamp uit db en zet deze om naar
// een mooi leesbaar formaat

// $timestampuitdb

$tijd = date("d-m-Y H:i", $timestampuitdb);

echo $tijd; // 10-10-2004 13:13 oid

[ Voor 20% gewijzigd door seamus21 op 10-10-2004 13:20 ]

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

  • MJV
  • Registratie: Mei 2003
  • Laatst online: 15:07

MJV

En anders:

PHP:
1
2
3
4
5
6
7
$row = "20040723162003";
$jaar = substr($row,0,4);
$maand = substr($row,4,2);
$dag = substr($row,6,2);
$uur = substr($row,8,2);
$minuut = substr($row,10,2);
$seconde = substr($row,12,2);

Acties:
  • 0 Henk 'm!

  • veer0318
  • Registratie: September 2003
  • Laatst online: 02-02 09:24
Wat is er mis met MySQL's "FROM_UNIXTIME()"?

SELECT FROM_UNIXTIME(timestampveld) AS datum FROM tabel;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dutchbood het werkt als ik het doe zoals je verteld.. echter als dat unix timestamp kan werken dan is dat beter denk ik...

echter werke scripting moet ik waar dan toevoegen in mijn script?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je aan de hand van Cheatah en DutchBlood zelf niet kan vinden wat je moet gebruiken, dan klopt er toch iets niet. Die manual is zo duidelijk als wat, en het kan nooit kwaad om die door te lezen.
En dit soort dingen op gaan lossen met 6 substr's is al helemaal niet de bedoeling van een timestamp in PHP. :X

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

veer0318 schreef op 10 oktober 2004 @ 13:31:
Wat is er mis met MySQL's "FROM_UNIXTIME()"?
Dat dat precies de verkeerde functie is |:(

UNIX_TIMESTAMP moet je hebben.

Maar als de topicstarter alleen maar een presenteerbare datum wil, dus als hij er niets anders mee doet dan naar de output echo'en, dan kan hij net zo goed DATE_FORMAT gebruiken.
Maar dat staat allemaal uitgebreid uitgelegd op de pagina die Dutchblood noemde.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die pagina´s die zijn zeker waardevol geweest! de datum komt er nu wel goed uit. Echter vroeg ik me af hoe de unix timestap werkte in mijn voorbeeld.

Het kan nooit kwaad om wat extra´s te leren..

maar het probleem van de datum te echoen is nu zeker opgelost!

Bedankt!

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Verwijderd schreef op 10 oktober 2004 @ 14:34:
Echter vroeg ik me af hoe de unix timestap werkte in mijn voorbeeld.
Je query aanpassen, van dit: SELECT feed_id,timestamp,link,title,content FROM px_items
Dit maken: SELECT feed_id, UNIX_TIMESTAMP(timestamp), link, title, content FROM px_items

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik nu de unix timestamp functie. Deze werkt nu prima.

Bedankt allemaal!
Pagina: 1