比较字符串与时间

时间:2013-02-21 14:11:25

标签: php sql

我试图从报告中获取总数到sql。我只希望这发生如果一行比最后一行更新进入sql所以我添加了一个在报告上标记的日期和时间:

e.g。

141480128217,WRONG_PERFORMANCE,g3t3,19/01/2013 02:58pm
182483629803,WRONG_PERFORMANCE,g3t3,19/01/2013 03:01pm
108484044725,WRONG_PERFORMANCE,g3t1,19/01/2013 03:10pm

所以如果我已经运行了这个并且之前添加的最后一行是03:01 pm的那一行所以'WRONG_PERFORMANCE'总计是2但是再次运行它我希望它是3但是我每次更新都加倍第一个是2,第二个是5,即使没有新行,它仍然是8下一个更新(5 + 3),依此类推。为了避免这种情况,我想确保报告中的日期比sql的最后一次更新更新(我将从每行添加日期并替换之前的日期,以便最后添加的日期将是在sql中的日期)但因为它是一个字符串,它无法正确比较。我该怎么做呢?我尝试了一些不同的方法,但没有任何方法。

修改 我尝试过以下方法:

$newDate = date("d/m/y/ h:i:s", strtotime("19/01/2013 01:42pm"));

得到了结果:

01/01/70/ 12:00:00

我尝试像这样切换日期和月份:

$newDate = date("d/m/y h:i:s", strtotime("01/19/2013 01:42pm"));

并得到以下内容:

19/01/13 01:42:00

那么如何让这个与报告一起使用呢?!?

RESULT

$date = str_replace("/", "-", "19/01/2013 01:42pm");
$newDate = date("d/m/y h:i:s", strtotime("$date"));
echo $newDate;

返回了正确的日期格式!

2 个答案:

答案 0 :(得分:0)

将日期转换为YYYY-MM-DD格式(如果需要,请包括时间),然后可以按日期对数据进行排序。然后你的第一个(或最后一个,取决于你如何排序)记录将是最新的。

编辑:

str_replace解决了你的问题因为引用php.net:

“m / d / y或dmy格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国m / d / y;而如果分隔符是破折号( - )或点(。),然后是欧洲dmy格式。“

因此,通过将您的分隔符设置为 - ,您使php查找d-m-y日期而不是m / d / y日期。

答案 1 :(得分:0)

您可以将字符串原样转换为日期时间,并使用它来比较日期。 然而,您的日期是D / M / Y格式,您的服务器很可能设置为将日期解释为M / D / Y,并且没有19个月。 :)

如果有,请尝试SET DATEFORMAT DMY。