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?
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: