从完整日期开始推断

时间:2018-02-05 21:54:36

标签: mysql datetime awk

我正在解析命令的输出,该命令生成Mon 2/5 16:36形式的日期条目,并将其加载到mysql中。目前,awk正在解析这些行并为INSERT离子准备数据。理想情况下,我希望使用STR_TO_DATE函数或类似函数为自己生成时间戳。

然而,该功能在没有一年的情况下无法运作。我不能说服产生这个日期的命令给我一年,虽然我知道它将来永远不会产生约会。如果日期> 1岁,我不确定会发生什么,因为我从未见过这种情况。因此,我希望这一年成为最新的一年,使得日期有效,但不比NOW()更新。

有没有办法在纯SQL中执行此操作?

一些例子,好像是在2018年2月5日17:00解决:

  • Sun 2/4 16:42 - > 2018年2月4日
  • 星期一2/5 16:59 - > 2018年2月5日
  • Mon 2/5 17:01 - > 2007-02-05
  • 星期二2/6 08:00 - > 2007-02-06
  • 星期一2/6 16:59 - > 2017年2月6日

1 个答案:

答案 0 :(得分:0)

我让这个工作:

mysql> SELECT STR_TO_DATE(CONCAT('Sun 2/4 16:42', YEAR(NOW())), '%a %c/%e %H:%i%Y') AS datetime;
+---------------------+
| datetime            |
+---------------------+
| 2018-02-04 16:42:00 |
+---------------------+

然后测试结果datetime > NOW()是否如此,重新计算:

mysql> SELECT @datetime - INTERVAL 1 YEAR AS datetime;
+---------------------+
| datetime            |
+---------------------+
| 2017-02-04 16:42:00 |
+---------------------+