mysql %d format: a number is required, not str
时间: 2023-06-26 19:05:22 浏览: 46
这个错误通常发生在你使用了字符串而不是数字作为 `%d` 占位符的值时。请确保你传递给 `%d` 的值是一个数字而不是字符串。你可以尝试使用 `int()` 函数将字符串转换为整数,比如:
```
value = '42'
formatted_value = '%d' % int(value)
```
如果你使用的是 f-string,可以使用以下方式:
```
value = '42'
formatted_value = f'{int(value):d}'
```
这将确保你传递给 `%d` 的值是一个数字。
相关问题
MySQL8报错:Public Key Retrieval is not allowed
这个错误通常是由于 MySQL 8 默认禁用了公钥检索所导致的。在 MySQL 8 中,默认情况下,连接 MySQL 数据库时不允许使用公钥检索来验证身份。
要解决这个问题,你可以尝试以下方法之一:
1. 在连接 URL 中添加 `allowPublicKeyRetrieval=true` 参数。例如:
```
jdbc:mysql://hostname:port/database?allowPublicKeyRetrieval=true
```
2. 修改 MySQL 8 的配置文件 `my.cnf` 或 `my.ini`,将 `mysql_native_password` 改为 `caching_sha2_password`。打开配置文件,在 `[mysqld]` 部分添加或修改以下行:
```
default_authentication_plugin=caching_sha2_password
```
然后重启 MySQL 服务。
希望这些方法可以帮助你解决问题。如果还有其他疑问,请随时提问。
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
这个 SQL 查询语句的目的是从 `his_vn_his_pat_inhos_record` 表中选取符合条件的记录。条件是 `dept_code` 字段等于给定的 `deptCode` 值,并且 `enter_office_date` 字段大于当前时间的某个特定时间。
特定时间的计算逻辑如下:
- 如果当前时间小于当天的08:00:00,则特定时间为当前时间的前一天的07:00:00;
- 否则特定时间为当天的07:00:00。
请注意,这个查询中使用了参数 `#{deptCode}`,你需要将其替换为实际的部门代码值。另外,这个查询使用了 MySQL 中的日期和时间函数,确保你所使用的数据库支持这些函数。