我正在解析命令的输出,该命令生成 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 |
+---------------------+
关于mysql - 从不完整的日期推断年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48632129/