如何显示从月底开始到月初结束的休假信息?

Posted

技术标签:

【中文标题】如何显示从月底开始到月初结束的休假信息?【英文标题】:how to show a leave info that starts from the end of month and ends with the first of month? 【发布时间】:2021-09-26 06:17:13 【问题描述】:

我有一个表单,用户可以在其中查看他的休假已获批准。但问题开始于用户申请休假时选择从该月的结束日期开始并以该月的开始日期结束的日期。

这是查询

SELECT l.applicationID
     , l.empID
     , e.name
     , l.typeID
     , t.title
     , t.allowed_leave
     , l.start_date
     , l.end_date
     , l.comment
     , l.status 
  FROM leave_application l 
  JOIN employee e
    ON e.empID = l.empID 
  JOIN leave_type t
    ON t.typeID = l.typeID 
 where l.empID = $employee_id 
   AND status = 'approved' 
   AND start_date LIKE '$start_date%'

现在,当用户尝试选择列表中显示的起始月份,但当他选择结束日期时,由于未定义结束日期的查询,因此未显示。

【问题讨论】:

【参考方案1】:

首先你应该避免连接你的 SQL 字符串并使用准备好的语句来防止 SQL 注入。然后就可以像这样使用SQL日期函数来测试年月了;

// getting the input from the request
$inputDate = filter_input(INPUT_POST, 'startDate');
// splitting the string into an array
$dateParts = explode('-', $inputDate);

$sql = 'SELECT .. FROM yourtable WHERE some tests'

// adding the variable part of the query where clause
// the question marks will be replaced by true values 
// when you will execute the query
if (count($dateParts) >= 2)
  $sql .= ' AND YEAR(startDate)=? AND MONTH(startDate)= ?'
 
if (count($dateParts) == 3)
  $sql .= ' AND DAY(startDate)=?'


// Preparing and executing the query
$dbConnection = new PDO(...);
$statement = $dbConnection->prepare($sql);
// executing the query passing the values as an array
$statement->execute($dateParts);

希望对大家有帮助

【讨论】:

以上是关于如何显示从月底开始到月初结束的休假信息?的主要内容,如果未能解决你的问题,请参考以下文章

根据登录的用户查看休假详细信息

休假结束,Linus重回内核开发岗位

TFS 从 2008 年升级到 2012 年 - 更改已签出,但员工休假

QLineEdit 上的活动休假

2022-02-18:最大休假次数。 力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题

字节跳动公司有没有年休假?