如何从前两列获取月份和年份的完整日期,以及如何用完整日期更新第三列

时间:2019-07-01 09:06:13

标签: mysql

我有一个包含三列的表格。
第一列月份的类型为tinyInt,其中包含月份(例如8月为8,12月为12)。
第二列年份的类型为smallInt,其中包含年份(例如2018年)。
第三列日期的类型为dateTime,为空,默认情况下为NULL。

.__________________________________________.
| id | month | year |        date          |
-------------------------------------------|
| 1  |   7   | 2018 |        NULL          |
-------------------------------------------|
| 2  |   7   | 2018 | 2018-07-01 00:00:00  |

我要做的是获取月份和年份,将其融合以创建完整日期,并使用日期为NULL的完整日期更新日期列。
意思是在sql的帮助下从第1行转到第2行。
全日那天对我来说并不重要,因此默认情况下可以是01甚至是20

在谈到SQL时,我几乎处于初学者/经验丰富的初学者级别,因为我仅作为基本用户编写简单命令来使用它,因此请耐心等待。

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

UPDATE table_name 
    SET `date` = STR_TO_DATE(CONCAT(`year`, '-', `month`, '-1'), '%Y-%c-%e')
WHERE `date` IS NULL

-- CONCAT_WS
UPDATE table_name 
    SET `date` = STR_TO_DATE(CONCAT_WS('-', `year`, `month`, 1), '%Y-%c-%e')
WHERE `date` IS NULL

您也可以create a VIEW动态获取最后一列(date),而无需UPDATE

CREATE VIEW v_name AS
    SELECT `id`, `month`, `year`, STR_TO_DATE(CONCAT_WS('-', `year`, `month`, 1), '%Y-%c-%e') AS `date`