Mysql 时间戳和 Var

Mysql Timestamp and Var

我必须计算 2 列之间的天数差异,其中一列是时间戳,另一列是 varchar

时间戳 - 2016-01-25 23:55:23 和 varchar - 24/12/2015

这不是最好的日期格式,但考虑到我无法更改列类型,是否可以算出这两列之间的天数差异?

非常感谢 最大值

PHP中的DateTimeClass非常强大灵活,专门使用createFromFormat()方法加载不同格式的日期还蛮开心的。与 ->diff() 方法一起使用,你应该得到你想要的。

这是一个例子

<?php
$ts = '2016-01-25 23:55:23';
$vc = '24/12/2015';

$tsdate = DateTime::createFromFormat('Y-m-d H:i:s', $ts);
$vcdate = DateTime::createFromFormat('d/m/Y', $vc);

$interval = $vcdate->diff($tsdate);

echo $interval->format('%R%a days');

或者,当您查询这个奇怪的 varchar 字段时,您可以让 MYSQL 来完成繁重的工作并使用它的 STR_TO_DATE() 函数

SELECT tsCol, STR_TO_DATE(varcharColumn, '%d/%m/%Y) as otherDate

然后当您在 PHP 中看到它时,它将被转换为 MySQL DATETIME

或者更进一步,让 MySQL 完成您可以使用 MySQL 的 TIMESTAMPDIFF

的所有工作
SELECT TIMESTAMPDIFF(DAY, tsCol, STR_TO_DATE(varcharColumn, '%d/%m/%Y)) as differenceInDays;