Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Error Code: 1292. Incorrect datetime value: '2016-03-27 02:00:00' for column ....

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Stoni, 23 Januar 2017.

  1. Stoni

    Stoni Benutzer

    Hallo zusammen,

    knobel an einem Problem mit Zeiten herum. Ich möchte mir eine Tabelle erstellen, in der im 15min Takt immer der gleiche Wert hinterlegt ist. (Macht isoliert erst mal keinen Sinn). Später Soll mit Datensätzen gerechnet werden.

    Dazu habe ich mir folgende Tabelle gebaut:

    Drop table if exists `interpolated_ratedata`;

    CREATE TABLE `interpolated_ratedata` (
    `RecordNumber` int(10) NOT NULL AUTO_INCREMENT,
    `RateInstance` int(10) NOT NULL,
    `Timestamp` timestamp DEFAULT NULL,
    `Data` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`RecordNumber`),
    KEY `TLData_Instance_InterpolateTimeStamp_Index` (`RateInstance`,`Timestamp`)#,
    #CONSTRAINT `TLData_FKey_Constraint` FOREIGN KEY (`TLInstance`) REFERENCES `tl` (`TLInstance`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


    Dann folgende Procedure geschrieben:

    -- --------------------------------------------------------------------------------
    -- Routine DDL
    -- Note: comments before and after the routine body will not be stored by the server
    -- --------------------------------------------------------------------------------
    DELIMITER $$

    CREATE DEFINER=`root`@`localhost` PROCEDURE `generate_rate`(starttime timestamp, endtime timestamp, cost float)
    BEGIN
    #DECLARE CONTINUE HANDLER For 1292 #Errorhandler for Daylight Saving
    #BEGIN
    DECLARE acttime timestamp;

    SET acttime = starttime;

    WHILE acttime < endtime DO
    INSERT INTO `virtual_historian`.`interpolated_ratedata`
    ( `RateInstance`,`Timestamp`,`Data`)
    VALUES
    ( 1, acttime, DATA);
    SET acttime = timestampadd(MINUTE,15,acttime);
    END WHILE;
    #END; #Error Handler 1292
    END


    und aufgerufen:

    CALL `virtual_historian`.`generate_rate`('2016-01-01', '2016_12_31', 0.285);

    Ich erhalte folgenden Fehler:

    19:41:38 CALL `virtual_historian`.`generate_rate`('2016-01-01', '2016_12_31', 0.285) Error Code: 1292. Incorrect datetime value: '2016-03-27 02:00:00' for column 'acttime' at row 2 1.295 sec

    Das Datum dürfte die Sommerzeitumstellung sein. Mit welchem Trick kann man das umgehen?
     
    Zuletzt bearbeitet: 23 Januar 2017
  2. akretschmer

    akretschmer Datenbank-Guru

    MySQL funktioniert deutlich besser, wenn man es ganz kurz vor Anwendung gegen eine besser funktionierende Datenbank austauscht ;-)

    Code:
    select '2017-01-01 00:00:00'::timestamp + '15 minutes'::interval * s from generate_series(0, 24 * 4 * 365 -1) s;
    
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden