NEXT_DAY("01-SEP-95","FRIDAY")
返回下週五的日期,但在MySQL中這個函數似乎不會出現。什麼是替代方案?什麼是Oracle的NEXT_DAY函數的MySQL替代品?
0
A
回答
0
在MySQL中,您可以創建用戶定義的函數
DELIMITER //
CREATE FUNCTION next_day(start_date DATETIME, weekday CHAR(20))
RETURNS DATETIME
BEGIN
DECLARE start DATETIME;
DECLARE i INT;
// Select the next date
SET start = ADDDATE(start_date, 1);
SET i = 1;
days: LOOP
-- Compare the day names
IF SUBSTR(DAYNAME(start), 1, 3) = SUBSTR(weekday, 1, 3) THEN
LEAVE days;
END IF;
// Select the next date
SET start = ADDDATE(start, 1);
SET i = i + 1;
-- Not valid weekday specified
IF i > 7 THEN
SET start = NULL;
LEAVE days;
END IF;
END LOOP days;
RETURN start;
END;
//
DELIMITER ;
,並調用它
SELECT NEXT_DAY("1995-09-01","FRIDAY")
+0
那意味着沒有內置函數可以得到結果嗎? –
+0
@Madhivanan - 我不是MySQL的人,但爲什麼不只是做ADDDATE(開始,7),如果dayname是相同的,那麼我們就很好。循環看起來有點過分了。無可否認,我可能錯過了一個MySQL技巧,因爲這不是我用過的。 – BriteSponge
0
這裏的回答不同的問題:
查找本週週五的日期: -
SELECT STR_TO_DATE(CONCAT('2017',(SELECT DATE_FORMAT(CURDATE(),'%U')),' Friday'),'%Y %U %W') x;
+------------+
| x |
+------------+
| 2017-05-12 |
+------------+
上述內容尚未經過驗證,因爲它的「原樣」僅僅作爲思考的食物。
0
的MySQL 5.6架構設置:
CREATE TABLE your_table (value DATE);
INSERT INTO your_table (value)
SELECT DATE '2017-05-08' FROM DUAL UNION ALL
SELECT DATE '2017-05-09' FROM DUAL UNION ALL
SELECT DATE '2017-05-10' FROM DUAL UNION ALL
SELECT DATE '2017-05-11' FROM DUAL UNION ALL
SELECT DATE '2017-05-12' FROM DUAL UNION ALL
SELECT DATE '2017-05-13' FROM DUAL UNION ALL
SELECT DATE '2017-05-14' FROM DUAL;
查詢1:
SELECT value,
ADDDATE(
value,
6 - DAYOFWEEK(value)
+ CASE WHEN DAYOFWEEK(value) < 6 THEN 0 ELSE 7 END
) AS next_friday
FROM your_table
| value | next_friday |
|-----------------------|-----------------------|
| May, 08 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 09 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 10 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 11 2017 00:00:00 | May, 12 2017 00:00:00 |
| May, 12 2017 00:00:00 | May, 19 2017 00:00:00 |
| May, 13 2017 00:00:00 | May, 19 2017 00:00:00 |
| May, 14 2017 00:00:00 | May, 19 2017 00:00:00 |
相關問題
- 1. 什麼是JavaScript中jQuery的each()函數的替代品?
- 2. 什麼是PHP的error_get_last()函數的Python替代品?
- 3. 什麼是iframe替代品?
- 4. 什麼是APC替代品?
- 5. 什麼是Erlang替代品?
- 6. oracle next_day函數使用天數
- 7. 什麼是Set-WindowsAzureLog的替代品?
- 8. 什麼是matlabFunction的好替代品?
- 9. 什麼是GeoEXT的替代品?
- 10. 什麼是avcodec_thread_init的替代品?
- 11. 什麼是REBASE.EXE的替代品?
- 12. 什麼是Threadpool的替代品?
- 13. 什麼是硒的一些替代品?
- 14. 什麼是Facebook的開源替代品?
- 15. Selenium webdriver:什麼是browserbot的替代品?
- 16. 什麼是:: shadow和/ deep /的替代品?
- 17. 什麼是Contacts.People.NOTES的替代品?
- 18. 什麼是Lattix的開源替代品?
- 19. 什麼是IncludeInAll(...)的替代品?
- 20. 什麼是checkValidity()的jQuery替代品?
- 21. 什麼是iPhone的鍵盤替代品?
- 22. 什麼是FilteredQueryDescriptor的替代品?
- 23. 什麼是Silverlight中DataTrigger的替代品
- 24. 什麼是grails.converters.deep.JSON的替代品
- 25. 什麼是Facebook Fans API的替代品?
- 26. 什麼是start-mapred.sh的替代品?
- 27. 什麼是XCTAssertEqualObjects的替代品?
- 28. 什麼是可用的XUL替代品?
- 29. 什麼是UIAccessibilityVoiceOverStatusChanged的替代品
- 30. 什麼是443端口的替代品?
我可以看到這個在線的一些實現,但我同意他們都似乎有點麻煩。我懷疑這裏的某個人可以做得更好 - 儘管定製功能的想法也很好。 – Strawberry