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