1
我想知道是否有辦法解決這個問題。MySQL。月底開始新行
所以我的行有一個類型爲日期的列,每天增加1天(直到相應的月份結束)。在新的月份開始時,必須生成一個新行,並且更新將再次開始,直到當月的時間,以此類推。等等。
我想知道是否有辦法解決這個問題。MySQL。月底開始新行
所以我的行有一個類型爲日期的列,每天增加1天(直到相應的月份結束)。在新的月份開始時,必須生成一個新行,並且更新將再次開始,直到當月的時間,以此類推。等等。
下面是一種思考MySQL SQL方言中問題的方法。
首先,您需要一個將datestamp
更改爲每個月唯一的值的函數。那是LAST_DAY(datestamp)
。它從任意輸入生成DATETIME
值,如2017-09-30 00:00:00
。
接下來,您可以利用MySQL的INSERT ... ON DUPLICATE KEY UPDATE
功能。您將創建一個表months
有,比方說,這些列
month_ending DATETIME
category VARCHAR(20)
sum_of_input INT
然後你讓month_ending, category
成一個獨特的複合索引。
然後,你做這樣的事情
INSERT INTO months /* warning! not debugged! */
(month_ending, category, sum_of_input)
VALUES (LAST_DAY(?date), ?category, ?value)
ON DUPLICATE KEY
UPDATE months
SET sum_of_input = sum_of_input + ?value
WHERE month_ending=LAST_DAY(?date)
AND category=?category
但是,這有一個很大的特點,很難調試,頸項強痛。在ETL系統中使用功能來完成工作總結會更有意義。
什麼原因導致日期每天增加? –
你如何創建最初的行?我想你必須用你的編程語言而不是sql來捕捉它。 –
你好,我正在使用ETL,Talend。在tMysqlInput中,我有一個CURDATE()函數,它每天增加它,因爲這個工作被編程爲每天晚上運行。 –