假设我知道DAYOFWEEK()
的日期,并且我知道WEEK()
和YEAR()
个数字。是否可以在 mysql 中格式化这些值的日期?
答案 0 :(得分:1)
你走了:
SELECT STR_TO_DATE('2014-20-2','%Y-%U-%w')-INTERVAL 1 DAY n;
+------------+
| n |
+------------+
| 2014-05-19 |
+------------+
INTERVAL位是为了说明%w将星期几解释为0(星期日)到6,而DAYOFWEEK从1(星期日)变为7 - 去数字!!!
%U也可能与WEEK()略有不同;以上似乎给出了正确答案,所以我没有进一步研究。
答案 1 :(得分:0)
我对sql并不擅长,所以我只会编写用于解决该问题的逻辑。
我们知道今年是什么(年())。我们可以使用1.1.1900的事实。是星期一,计算一周的哪一天是1.1。当年。然后我们可以计算当前周的哪些日期(WEEK())。再次使用1.1.1900的事实。星期一,我们可以计算出每周的哪一天,并将其与当前的一周(DAYOFWEEK())进行比较。
同样,我对sql并不擅长,所以这可能是非常低效的解决方案。但我希望这至少可以为您提供一些想法并帮助您找到解决方案。祝你好运。
答案 2 :(得分:0)
SELECT
DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00') AS date,
STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s') AS samedaylastyear,
DAYOFWEEK(DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00')) AS check1,
DAYOFWEEK(STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s')) AS check2