我正在解析命令的输出,该命令会生成Mon 2/5 16:36
形式的日期条目,并将其加载到mysql中。当前,awk
正在解析行并为INSERT
ion准备数据。理想情况下,我想使用STR_TO_DATE
函数或类似的函数为自己生成一个时间戳。
但是,如果没有一年,该功能将无法正常工作。尽管我确实知道它将永远不会产生一个日期,但是我不能说服产生这个日期的命令给我一年的时间。我不确定如果日期大于1年会发生什么,因为我从未见过这种情况。因此,我希望年份是最新的年份,这样日期是有效的,但不比NOW()
更新。
有没有办法在纯SQL中做到这一点?
解决了一些示例,就好像是2018年2月5日17:00:
周日2/4 16:42-> 2018-02-04
周一2/5 16:59-> 2018-02-05
星期一2/5 17:01-> 2007-02-05
周二2/6 08:00-> 2007-02-06
周一2/6 16:59-> 2017-02-06
最佳答案
我得到这个工作:
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 |
+---------------------+