我试图获得特定日期的星期开始(星期日,作为日期)。除星期日以外,这个工作有效,因为星期一起始于星期一:
SELECT DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_DATE(), 'yyyy-MM-dd')), CAST(FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_DATE(), 'yyyy-MM-dd'), 'u') AS INT))
上述功能将返回' 2018-04-15'提供日期为' 2018-04-22'而我想要' 2018-04-22'。周日唯一可以写一个案例陈述来抵消吗?我希望FROM_UNIXTIME()有一个很好的参数可以在星期日开始。我在这些文档中找不到它们:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
答案 0 :(得分:0)
你可以通过一个没有case语句的简单技巧来获得结果。
用7计算工作日的模数值,你应该得到你的结果。
SELECT DATE_SUB(CURRENT_DATE(), CAST(DATE_FORMAT(CURRENT_DATE(),'u')%7 AS INT));