我使用MySQL.我有一个数据库,里面有关于员工的数据:姓名、雇佣日期(年-月-日).我想在工作的第一个月工作几天.月份有不同的天数,我想不出该怎么做.

我认为TIMESTAMPDIFF()函数可能有用,但我找不出正确的语法. 我是一个SQL初学者,希望您能忍耐一下.

推荐答案

如果您有一个名为hiredate的列,类型为DATE,您可以用LAST_DAY(hiredate)来确定该人员被雇用的月份的最后一天.

SELECT LAST_DAY(hiredate) AS hired_in_month_ending

然后,您可以用DATEDIFF(end, start)来确定从雇佣日期到月底之间的calendar days个数字.

SELECT 1 + DATEDIFF(LAST_DAY(hiredate), hiredate) AS calendar_days_in_month_hired

(1 + 是为了处理这样一个事实,即在一个月的最后一天雇用的人实际上只在工资单上呆了一天.)

至于days worked人的数字,这取决于你没有提到的各种因素.周末?度假?缺席?

Mysql相关问答推荐

嵌套MySQL语句问题

在MySQL中查找包含无效正则表达式的行

SQL查询连接到多个类别的项目

获取每个参数的记录,不重复

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

列出每年最多产的三位作家

使用 SELECT 时应锁定多少行 .. FOR UPDATE LIMIT 1

Mysql根据文本语言或行数将列拆分为多列

高效的 SQL 查询,用于计算半小时时间序列中已发生的行的一部分

完全匹配 IN 子句中的所有值

使用数据表的直方图(SQL 查询)

MySQL在定义表的位置后抛出错误

MySQL过滤食谱上的多对多 - 成分表

我在查询中没有得到正确的结果

PHP PDO 与普通 mysql_connect

我可以在单个 Amazon RDS 实例上创建多少个数据库

在 MySQL 中找不到 outfile 创建的文件

mysql错误'TYPE = MyISAM'

如何将本地托管的 MySQL 数据库与 docker 容器连接

将 UTF8 表上的 latin1 字符转换为 UTF8