1

我有一张表 tbl_remit。

 ________________________________________________________________
|RemitNo|ID|Employer|From_Month|From_Year|To_Month|To_Year|Amount|
|   1   |1 |    a   |   01     |   2016  |   01   |  2016 |200.00|
|   2   |1 |    a   |   02     |   2016  |   02   |  2016 |200.00|
|   3   |1 |    a   |   03     |   2016  |   03   |  2016 |200.00|
|   4   |1 |    a   |   04     |   2016  |   06   |  2016 |600.00|

此表代表Employer(a)金额ID(1)为 月份的From_Month(01) From_Year(2016) To_Month(01) To_Year(2016)汇款Amount(200.00)

雇主在 2016 年 1 月 1 日至 2016 年 1 月 31 日期间支付了 200.00。我需要创建一个视图,它将 FROM_Month 和 FROM_Year 列组合为日期,格式为 01/01/2016,并将 TO_Month 和 TO_Year 列组合为日期,格式为 2016 年 1 月 31 日。

我用过STR_TO_DATE(Concat('From_To','/','1','/','From_Year'), '%m/%d/%Y')但它返回NULL

非常感谢任何意见和建议。

4

1 回答 1

3

From_To删除和From_Year列周围的单引号:

SELECT STR_TO_DATE(CONCAT(From_Year, '/', From_Month, '/01'), '%Y/%m/%d') AS From_Date,
       STR_TO_DATE(CONCAT(To_Year,   '/', To_Month,   '/01'), '%Y/%m/%d') AS To_Date
FROM yourTable

作为一般建议,您应该始终将日期信息存储在单个列中,使用日期类型,例如dateor timestamp

更新:

如果要获取日期的最后一天to,可以使用以下LAST_DAY函数:

LAST_DAY(STR_TO_DATE(CONCAT(To_Year, '/', To_Month, '/01'), '%Y/%m/%d'))
于 2016-10-25T02:53:54.467 回答