我正在尋求在相應的表中找到該月的第一個日期:

因此,如果我將 26/08/2011 年 8 月作為日期并添加 2 個月,則它變為 2011 年 10 月 26 日。我需要結果月份的第一個日期——比如 2011 年 1 月 10 日。
這可以在 SQL 中實作嗎?
更新:我可以使用 DATEADD(month,months_add, date) 獲取月份的日期
無法到達“月初”。嘗試:如何在 SQL 中選擇一個月的第一天? 但對我來說,它拋出了錯誤:function pg_catalog.date_diff("unknown", integer, date) does not exist;
uj5u.com熱心網友回復:
您可以嘗試使用 date_add 來添加兩個月,使用 date_sub 來添加 -1 天
set @my_date = "2017-06-15";
SELECT DATE_SUB( DATE_ADD(@my_date, INTERVAL 2 MONTH),
INTERVAL DAYOFMONTH(@my_date)-1 DAY);
uj5u.com熱心網友回復:
SELECT table.date,
table.month_add,
DATE_FORMAT(table.date INTERVAL table.month_add MONTH,
'%Y-%m-01') AS beginning_of_month
FROM table
uj5u.com熱心網友回復:
假設您的日期當前是varchar格式dd/MM/yyyy,您可以使用STR_TO_DATE將其轉換為DATE型別列,然后DATE_ADD與您的months_add列一起使用以動態添加月份,然后最終使用以月份第一天的格式DATE_FORMAT顯示它。01/MM/yyyy
SELECT
Date_Column,
Date_Months_Add,
DATE_FORMAT(DATE_ADD(STR_TO_DATE(Date_Column, "%d/%m/%Y" ), INTERVAL Date_Months_Add MONTH), '01/%m/%Y') AS Date_Beginning
FROM sample
結果:
| Date_Column | Date_Months_Add | Date_Beginning |
|-------------|-----------------|-----------------|
| 26/08/2011 | 2 | 01/10/2011 |
| 25/04/2011 | 1 | 01/05/2011 |
| 16/09/2022 | 3 | 01/12/2022 |
| 14/07/2022 | 4 | 01/11/2022 |
在這里拉小提琴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517928.html
標籤:mysqlsql
下一篇:如何劃分兩列并每行顯示結果?
