mysql 中日期加减

直接使用DATE_ADD和DATE_SUB。
一般来说,它是日期和时间的加法和减法。

DATE_ADD(NOW(), INTERVAL 1 0 DAY) 添加 1 0 天。
例如,1 1 /1 7 /2 02 5 加 1 0 天就是 1 1 /2 7 /2 02 5
DATE_SUB(NOW(), INTERVAL 2 MONTHS) 减去 2 个月。
例如,1 1 /1 7 /2 02 5 减去 2 个月就是 09 /1 7 /2 02 5
DATE_ADD('2 02 5 -1 1 -1 7 ', INTERVAL 1 YEAR) 添加 1 年。
例如,2 02 5 年 1 1 月 1 7 日加 1 年 - 2 02 6 年 1 1 月 1 7 日。

DATE_ADD(NOW(), INTERVAL 3 HOURS) 添加 3 小时。
例如,1 9 :1 6 加 3 小时就是 2 2 :1 6
DATE_SUB(NOW(), INTERVAL 4 5 MINUTES) 减 4 5 分钟。
例如,1 9 :1 6 减去 4 5 分钟就是 1 8 :3 1
DATE_ADD(NOW(), INTERVAL -5 DAY) 使用 DATE_ADD 减去 5 天。
例如,1 1 /1 7 /2 02 5 减去 5 天就是 1 1 /1 2 /2 02 5
DATE_SUB(NOW(), INTERVAL -1 MONTH) 使用 DATE_SUB 加 1 个月。
例如,1 1 /1 7 /2 02 5 加 1 个月就是 1 2 /1 7 /2 02 5
注意。
在日期中添加小时会添加零。
例如,“2 02 5 -1 1 -1 7 ”加上 HOUR 变为“2 02 5 -1 1 -1 7 00:00:00”。

闰年自动调整。
例如,DATE_ADD('2 02 5 -02 -2 9 ', INTERVAL 1 YEAR) 为 '2 02 6 -03 -01 '。

返回类型取决于输入。
DATE 类型返回 DATE,DATETIME 返回 DATETIME。

使用 DATEDIFF 计算天数差异。
例如,DATEDIFF('2 02 5 -1 2 -01 ', '2 02 5 -1 1 -1 7 ') 是 1 4 天。

格式使用 DATE_FORMAT。
例如,DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 7 DAY), '%Y-%m-%d %H:%i:%s')。

建议直接使用DATE_ADD/DATE_SUB。
不要使用负转换,代码会更清晰。

自己掂量一下。

如何解决Laravel中UUID生成和验证的问题?webpatser/laravel-uuid可以帮你!

老实说,使用 webpatsr/laravel-uuid 库可以轻松在 Laravel 中创建 UUID。
一开始我还担心UUID,后来用这个库解放了我的双手。

1 .安装非常简单 只需运行命令:composer require webpassenger/laravel-uuid:^3 .0 安装后不用担心,Laravel 会自行处理配置。
我试过了,比自己手动注册服务商要容易得多。

有两种基本的生成方法: php Uuid::生成(); //默认版本1 ,时间+mac Uuid::generate()->字符串; // 直接转换为字符串
默认版本是1 ,对于大多数情况来说已经足够了。
如需更换版本,直接转号即可。

2 你必须注意版本。
1 .版本1 (Time + Mac):此版本是默认版本,运行良好。
然而,MAC地址可能会泄露硬件信息,所以要小心。
php Uuid::生成(1 , '00:1 1 :2 2 :3 3 :4 4 :5 5 '); // 指定mac
3 .版本3 (MD5 哈希+命名空间):适用于DNS场景。
php Uuid::generate(3 , '测试', Uuid::NS_DNS);
4 .版本4 (完全随机):最常用于分布式系统。
无论如何,我将这个版本用于所有分布式项目。
php Uuid::生成(4 );
5 . 版本 5 (SHA-1 哈希 + 命名空间):与 3 相同,但使用 SHA-1 php Uuid::generate(5 , '测试', Uuid::NS_DNS);
完成的UUID还可以导入解析,对于获取信息非常方便。
php $uuid = Uuid::import('d3 d2 9 d7 0-1 d2 5 -1 1 e3 -8 5 9 1 -03 4 1 6 5 a3 a6 1 3 '); dd($uuid->时间); //时间戳 dd($uuid->版本); //版本号
3 . 雄辩的整合 自动化 uuid在模型中创建一个引导方法以从表单中分配值(我使用版本 4 ): php 公共静态函数 boot() { 父::启动(); self::construct(函数 ($model) { $model->uuid = (string) Uuid::generate(4 ); }); }
请记住对数据库字段使用 CHAR(3 6 )。
MySQL8 .0+可以直接使用UUID类型。

根绑定也很简单: php 公共函数 getRouteKeyName() { 返回“uuid”; }
当访问 /users/{uuid} 时,会自动使用 uuid 来检查数据。
我尝试了一下,效果非常好。

4 验证 uuid 直接在表单请求中使用UUID规则: php $request->validate(['uuid_field' => 'uuid']);
或者手动验证: php $uuid = Uuid::生成(4 ); $validator = Validator::make(['uuid' => $uuid], ['uuid' => 'uuid']); dd($verifier->pass()); // 正确
5 . 如何选择版本
版本4 :该版本在9 0%的情况下使用,非常适合分布式系统。

版本1 :MAC地址可能有问题,请谨慎使用。

版本3 /5 :需要固定的命名空间,适合生成确定性的UUID。

6 危机经历 1 .兼容性问题:数据库字段必须足够长(3 6 个字符)。
MySQL 5 .7 及以下版本只能使用CHAR(3 6 )。
2 .性能优化:批量插入时,提前生成UUID数组: php $uuids = array_map(fn() => (字符串) Uuid::generate(4 ), range(1 , 1 00));
3 .测试验证:使用 Uuid::isValid($string) 检查外部 UUID 的有效性。

总之,这个库用起来确实很方便。
具有多版本支持、雄辩集成、验证功能,直接最大化开发效率。

MySQL补丁下载及安装指南mysql下载补丁

上周,我朋友的公司的 MySQL 数据库遇到了稳定性问题,他们决定下载并安装最新的补丁。
我们先来说说下载。
他在MySQL官网上发现自己使用的MySQL版本是5 .7 .2 9 ,然后他在官网的补丁页面上找到了对应的补丁。
下载了一个名为“mysql-5 .7 .2 9 -patch.tar.gz”的补丁文件,大小约为2 00MB。

在安装之前,他备份了数据库并使用了mysqldump命令。
备份数据后,关闭MySQL服务器。
然后,他打开MySQL源代码目录,解压补丁文件。
解压命令为tar -xvf mysql-5 .7 .2 9 -patch.tar.gz。

然后他应用了补丁,运行 patch -p1 < mysql>接下来,使用 cmake、make 和 make install 命令重新编译并安装 MySQL。

最后,他启动了MySQL服务器,恢复了备份数据,并使用mysql -V确认补丁安装成功。
整个过程大约需要4 个小时。
他表示,虽然步骤有点复杂,但为了解决数据库稳定性问题还是值得的。
不过,下次他会寻找更简单的安装方法。
就看你了,连我都受不了。