Mysql 时间戳和 Var
Mysql Timestamp and Var
我必须计算 2 列之间的天数差异,其中一列是时间戳,另一列是 varchar
时间戳 - 2016-01-25 23:55:23 和 varchar - 24/12/2015
这不是最好的日期格式,但考虑到我无法更改列类型,是否可以算出这两列之间的天数差异?
非常感谢
最大值
PHP中的DateTime
Class非常强大灵活,专门使用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;
我必须计算 2 列之间的天数差异,其中一列是时间戳,另一列是 varchar
时间戳 - 2016-01-25 23:55:23 和 varchar - 24/12/2015
这不是最好的日期格式,但考虑到我无法更改列类型,是否可以算出这两列之间的天数差异?
非常感谢 最大值
PHP中的DateTime
Class非常强大灵活,专门使用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;