SELECT * FROM his_vn_his_pat_inhos_record WHERE dept_code =#{deptCode} AND DATE_FORMAT( enter_office_date, '%Y-%m-%d %H:%i:%s' ) > CASE WHEN NOW() < DATE_FORMAT(NOW(), '%Y-%m-%d 08:00:00') THEN DATE_SUB( DATE_FORMAT( NOW(), '%Y-%m-%d 07:00:00' ), INTERVAL 1 DAY ) ELSE DATE_FORMAT( NOW(), '%Y-%m-%d 07:00:00' ) END
时间: 2024-04-18 19:28:59 浏览: 134
这个 SQL 查询语句的目的是从 `his_vn_his_pat_inhos_record` 表中选取符合条件的记录。条件是 `dept_code` 字段等于给定的 `deptCode` 值,并且 `enter_office_date` 字段大于当前时间的某个特定时间。
特定时间的计算逻辑如下:
- 如果当前时间小于当天的08:00:00,则特定时间为当前时间的前一天的07:00:00;
- 否则特定时间为当天的07:00:00。
请注意,这个查询中使用了参数 `#{deptCode}`,你需要将其替换为实际的部门代码值。另外,这个查询使用了 MySQL 中的日期和时间函数,确保你所使用的数据库支持这些函数。
相关问题
优化sql SELECT DISTINCT rtr.rd_report_product_info_id AS rdReportProductInfoId , mar.machine_audit_result AS machineAuditResult,mar.machine_audit_result_desc AS machineAuditResultDesc FROM crm_rd_report_task_result rtr LEFT JOIN crm_rd_machine_audit_record mar ON rtr.dept_code = mar.dept_code AND rtr.belong_year = mar.belong_year AND rtr.belong_month = mar.belong_month WHERE mar.dept_code =#{deptCode} AND mar.belong_year = #{belongYear} AND mar.belong_month = #{belongMonth}
这是一条SQL查询语句,目的是从两个表中获取数据并进行优化。查询结果包括三个字段:rdReportProductInfoId、machineAuditResult和machineAuditResultDesc。其中,rdReportProductInfoId来自crm_rd_report_product_info表,而machineAuditResult和machineAuditResultDesc来自crm_rd_machine_audit_record表。这两个表通过LEFT JOIN连接起来,连接条件是dept_code、belong_year和belong_month。查询条件是mar.dept_code等于某个特定值。这条语句的目的是优化查询效率,提高查询速度。
优化一下代码 String DEPTCODE032 = nullStr(map.get("DEPTCODE032")); String DEPTCODE033 = nullStr(map.get("DEPTCODE033")); String DEPTCODE034 = nullStr(map.get("DEPTCODE034")); String DEPTCODE047 = nullStr(map.get("DEPTCODE047")); String DEPTCODE048 = nullStr(map.get("DEPTCODE048")); String innercode = null; if(DEPTCODE048 != null){ innercode = "select innercode from bd_staff where shortname = '"+DEPTCODE047+"' and tenantId = '"+tenantId+"' and dr = 0"; } else{ if(DEPTCODE047 != null){ innercode = "select innercode from bd_staff where shortname = '"+DEPTCODE034+"' and tenantId = '"+tenantId+"' and dr = 0"; }else{ if(DEPTCODE034 != null){ innercode = "select innercode from bd_staff where shortname = '"+DEPTCODE033+"' and tenantId = '"+tenantId+"' and dr = 0"; }else{ if(DEPTCODE033 != null){ innercode = "select innercode from bd_staff where shortname = '"+DEPTCODE032+"' and tenantId = '"+tenantId+"' and dr = 0"; }else{ if(DEPTCODE032 != null){ innercode = "select innercode from bd_staff where code = '0' and tenantId = '"+tenantId+"' and dr = 0"; }else{ innercode = RDLetters(); } } } } }
可以使用一个循环和一个变量来避免这样的长串if-else语句,优化后的代码如下:
```
String innercode = null;
String[] deptCodes = {"DEPTCODE048", "DEPTCODE047", "DEPTCODE034", "DEPTCODE033", "DEPTCODE032"};
for (String deptCode : deptCodes) {
String shortName = nullStr(map.get(deptCode));
if (shortName != null) {
innercode = "select innercode from bd_staff where shortname = '" + shortName + "' and tenantId = '" + tenantId + "' and dr = 0";
break;
}
}
if (innercode == null) {
innercode = "select innercode from bd_staff where code = '0' and tenantId = '" + tenantId + "' and dr = 0";
}
```
这里首先定义了一个字符串数组deptCodes,包含了需要判断的5个部门代码。然后使用一个for循环遍历这个数组,找到第一个非空的部门代码对应的innercode并跳出循环。如果都没有找到非空的部门代码,则使用默认的innercode。这样就可以避免冗长的if-else语句,提高了代码的可读性和可维护性。
阅读全文
相关推荐
















