0

我正在尝试从报告中获取总数字到 sql。我只希望在一行比最后一行更新进入 sql 时发生这种情况,所以我添加了在报告中标记的日期和时间:

例如

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 的那个所以总的“错误性能”是 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

那么我怎样才能让它与报告一起工作呢?!?

结果

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

返回正确的日期格式!

4

2 回答 2

0

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

编辑:

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

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

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

于 2013-02-21T14:20:49.967 回答
0

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

如果是这样,请尝试SET DATEFORMAT DMY。

于 2013-02-21T14:41:45.673 回答