From 581f8b14d1ddb718e3d62ec9ed24fe417ce0acb2 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Fri, 9 Sep 2016 12:16:11 +0200 Subject: [PATCH] MT#22477 correct init_time, start_time and end_time the way we create these output timestamps with fractional seconds is wrong, because FROM_UNIXTIME is not truncating its argument to int, but its rounds up/down. "CONCAT(FROM_UNIXTIME(accounting.cdr.start_time + accounting.cdr.duration), \". \", SUBSTRING_INDEX(accounting.cdr.start_time + accounting.cdr.duration, \".\", -1))" correct values are: start: 2016-09-06 06:58:27.586 +duration: 0.520 end: 2016-09-06 06:58:28.120 so all of init_time, start_time, end_time are wrongn. fix means an explicit int cast via FLOOR: "CONCAT(FROM_UNIXTIME(FLOOR(accounting.cdr.start_time + accounting.cdr.duration)), \". \", SUBSTRING_INDEX(accounting.cdr.start_time + accounting.cdr.duration, \".\", -1))" Change-Id: If6afaed4b1a573b36d0151c0d39eea05ba14b9ba --- lib/get_cdr_export_fields | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/get_cdr_export_fields b/lib/get_cdr_export_fields index 1032a991..a51af660 100644 --- a/lib/get_cdr_export_fields +++ b/lib/get_cdr_export_fields @@ -47,9 +47,9 @@ X_cdr_id_map.SOURCE_SUBSCRIBER_ID = "source_voip_subscribers.id"; X_cdr_id_map.DESTINATION_SUBSCRIBER_ID = "destination_voip_subscribers.id"; - X_cdr_id_map.INIT_TIME = "CONCAT(FROM_UNIXTIME(accounting.cdr.init_time), \".\", SUBSTRING_INDEX(accounting.cdr.init_time, \".\", -1))"; - X_cdr_id_map.START_TIME = "CONCAT(FROM_UNIXTIME(accounting.cdr.start_time), \".\", SUBSTRING_INDEX(accounting.cdr.start_time, \".\", -1))"; - X_cdr_id_map.END_TIME = "CONCAT(FROM_UNIXTIME(accounting.cdr.start_time + accounting.cdr.duration), \".\", SUBSTRING_INDEX(accounting.cdr.start_time + accounting.cdr.duration, \".\", -1))"; + X_cdr_id_map.INIT_TIME = "CONCAT(FROM_UNIXTIME(FLOOR(accounting.cdr.init_time)), \".\", SUBSTRING_INDEX(accounting.cdr.init_time, \".\", -1))"; + X_cdr_id_map.START_TIME = "CONCAT(FROM_UNIXTIME(FLOOR(accounting.cdr.start_time)), \".\", SUBSTRING_INDEX(accounting.cdr.start_time, \".\", -1))"; + X_cdr_id_map.END_TIME = "CONCAT(FROM_UNIXTIME(FLOOR(accounting.cdr.start_time + accounting.cdr.duration)), \".\", SUBSTRING_INDEX(accounting.cdr.start_time + accounting.cdr.duration, \".\", -1))"; X_cdr_id_map.SOURCE_CARRIER_ZONE = "COALESCE(source_carrier_bbz.zone, \"onnet\")"; X_cdr_id_map.SOURCE_CARRIER_DETAIL = "COALESCE(source_carrier_bbz.detail, \"platform internal\")"; X_cdr_id_map.SOURCE_CUSTOMER_ZONE = "source_customer_bbz.zone";