phpbar.de logo

Mailinglisten-Archive

Berechung mit MySQL ergibt falsche Ergebnisse

Berechung mit MySQL ergibt falsche Ergebnisse

Achim Will achim.will at gmx.de
Die Aug 26 14:36:20 CEST 2008


Hallo zusammen,

ich habe folgendes Problem:
In der DB habe ich in einem INT(10) unsigned Feld eine Datum als 
Unixtimetamp liegen.
Vergleiche mit UNIX-TIMESTAMP() klappen nur in der Zukunft, ist das 
Datum in der Vergangenheit, erhalte ich Fantastilionen als Ergebnis.
Wo ist mein Denkfehler, was mache ich falsch?
Für Antworten wäre ich dankbar,
Gruß, Achim



DB und Abfragen:

-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 26. August 2008 um 13:42
-- Server Version: 5.0.37
-- PHP-Version: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- Datenbank: `test`
-- 

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `tabelle`
-- 

CREATE TABLE `tabelle` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `datum` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci 
AUTO_INCREMENT=3 ;

-- 
-- Daten für Tabelle `tabelle`
-- 

INSERT INTO `tabelle` VALUES (1, 1198490400);
INSERT INTO `tabelle` VALUES (2, 1230112800);


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.0.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test
Database changed
mysql> SELECT FROM_UNIXTIME(datum, '%d.%m.%Y %H:%i') AS datum,
    -> datum - UNIX_TIMESTAMP() AS differenz
    -> FROM tabelle
    -> WHERE id = 1;
+------------------+----------------------+
| datum            | differenz            |
+------------------+----------------------+
| 24.12.2007 11:00 | 18446744073688288211 |
+------------------+----------------------+
1 row in set (0.00 sec)

// Das ist offensichlich falsch!

mysql> SELECT FROM_UNIXTIME(datum, '%d.%m.%Y %H:%i') AS datum,
    -> datum - UNIX_TIMESTAMP() AS differenz
    -> FROM tabelle
    -> WHERE id = 2;
+------------------+-----------+
| datum            | differenz |
+------------------+-----------+
| 24.12.2008 11:00 |  10358946 |
+------------------+-----------+
1 row in set (0.00 sec)

// Das ist richtig...

mysql>



_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive