假设MySQL中有一整列是YYYY-MM-DD,您希望将其选择为到特定日期的月数,并将其作为一个新列。示例日期可以是2020年3月。
因此,以下(表_1(:
Emp_Name | Hire_Date |
---|---|
Steve | 2018-03-28 |
TIMESTAMPDIFF(MONTH,startDate,endDate(是正确的函数。
日期常量需要显示为文本字符串。'2021-04-01'
是2021年愚人节。但不带引号的2021-04-01
是一个对2016
求值的算术表达式。
这是一把小提琴。
SELECT emp_name,
hire_date,
TIMESTAMPDIFF(MONTH, hire_date, '2022-03-07')
FROM table_1
有一个mysql函数可以通过传递年份和月份来实现这一点。PERIOD_DIFF(P1,P2(-返回周期P1和P2之间的月数。P1和P2的格式应为YYYMM或YYYYMM。请注意,周期参数P1和P2不是日期值
SELECT PERIOD_DIFF(200802,200703);
-> 11
SELECT emp_name,
PERIOD_DIFF
(
202104,
DATE_FORMAT(hire_date,"%Y%m")
) AS "Months_Employed"
FROM employees;
您可以使用以下查询中的功能添加生成的列:
select d,timestampdiff(month,'2020-03-01',d) X from dates where day(d)=1 and year(d)<=2020;
输出:
d | X |
---|---|
2020-01-01 | -2 |
2020-02-01 | -1 |
2020-03-01 | 0 |
2020-04-01 | 1 |
2020-05-01 | 2 |
2020-06-01 | 3 |