Re: [PHP] Converting a "timestamp"
[email protected] (Jennifer)
| Newsgroups | php.general |
|---|---|
| Message-ID | <[email protected]> |
Thank you for the extra replies. I may have been overthinking the conversion process, but now I have two ways of doing what I want. A friend of mine found a complete MySQL solution which is really elegant. It does the conversion “in place” _and_ in the blink of an eye!
UPDATE `search_log` set `date_time` = CONCAT(
SUBSTRING_INDEX(`date_time`, '|', 1), '-',
SUBSTRING_INDEX(SUBSTRING_INDEX(`date_time`, '|', -5), '|', 1), '-',
SUBSTRING_INDEX(SUBSTRING_INDEX(`date_time`, '|', -4), '|', 1), ' ',
SUBSTRING_INDEX(SUBSTRING_INDEX(`date_time`, '|', -3), '|', 1), ':',
SUBSTRING_INDEX(SUBSTRING_INDEX(`date_time`, '|', -2), '|', 1), ':',
SUBSTRING_INDEX(SUBSTRING_INDEX(`date_time`, '|', -1), '|', 1)
);
I also wrote a PHP solution that I mentioned yesterday (see below) which takes an SQL export file and manipulates the timestamp which I then import back into the table.
And, yes, I did convert the source code that generates the timestamp ;) and changed the field to DATETIME.
Thanks again,
Jenni
<?php
$handle1 = fopen('search_log.sql', 'r');
$handle2 = fopen('search_log_2.sql', 'w');
while (($line = fgets($handle1)) !== FALSE) {
if (substr($line, -2, 1) == ';') {
$line_ending = ''; }
else { $line_ending = ",\n"; }
if (substr($line, 0, 1) == '(') { // If the line starts with a '('
$cells = explode(',', $line);
$new_date = convert_timestamp($cells[5]);
$new_lines = "$cells[0],$cells[1],$cells[2],$cells[3],$cells[4],$new_date,$cells[6],$cells[7],$cells[8],$cells[9]$line_ending";
} else {
$new_lines = $line;
}
fwrite($handle2, $new_lines);
}
fclose($handle1);
fclose($handle2);
function convert_timestamp($ts) {
if (strpos($ts, '|') !== FALSE) {
$ta = explode('|', $ts);
return $ta['0'].'-'.$ta['1'].'-'.$ta['2'].' '.$ta['3'].':'.$ta['4'].':'.$ta['5'];
} else {
return $ts;
}
}
?>
Sample data:
('1040', 'frame', 34, NULL, '147.154.235.12', '2016|08|01|12|16|49', NULL, 'frame', ‘ ', 'both'),
('1041', 'wines', 22, NULL, ‘176.111.171.20', '2016|08|01|12|45|16', NULL, 'wines', ‘ ', 'both’),
('1042', 'cover', 35, NULL, '172.156.24.132', '2016|03|17|18|08|56', NULL, 'cover', ‘ ', 'both'),