2020-05-13

2020-05-13

[2020-05-29]mysql 使用 greatest 方法的结果用于 where 条件
[2020-05-28]使用异或进行参数检查, 两个关联的参数, 只有都有值都没值才合法
[2020-05-27]mysql 运行 sql dump 文件时报错 (2006, 'MySQL server has gone away')
[2020-05-13]GMT+0800 vs GMT+0805

[2020-05-29]mysql 使用 greatest 方法的结果用于 where 条件
select uid, greatest(time_a, time_b, time_c) as max_time from user
  where greatest(time_a, time_b, time_c) between TIMEA and TIMEB
  order by max_time desc
[2020-05-28]使用异或进行参数检查, 两个关联的参数, 只有都有值都没值才合法
let a = 'param1';
let b = 'param1';

if (!a ^ !b !== 0) {
  console.log('检查不通过');
}
[2020-05-27]mysql 运行 sql dump 文件时报错 (2006, 'MySQL server has gone away')

解决方案来自 https://www.jianshu.com/p/8c8086c11cae

我这边遇到的原因是运行的 sql 文件语句操作的数据过大, 超出了默认允许最大的数据包

show global variables like 'max_allowed_packet';

+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

mysql> set global max_allowed_packet=1024*1024*28;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 29360128 |
+--------------------+----------+
1 row in set (0.00 sec)
[2020-05-13]GMT+0800 vs GMT+0805

问题表现如下

new Date('1000-01-01 00:00:00').toISOString()
// "0999-12-31T15:54:17.000Z"

new Date("0999-12-31T15:54:17.000Z")
// 注意这里的 +0805
// Wed Jan 01 1000 00:00:00 GMT+0805 (中国标准时间)

new Date('1900-01-01 00:00:00').toISOString()
// "1899-12-31T15:54:17.000Z"

new Date("1899-12-31T15:54:17.000Z")
// 注意这里的 +0805
// Mon Jan 01 1900 00:00:00 GMT+0805 (中国标准时间)

new Date().toISOString()
// "2020-05-13T03:48:47.210Z"

new Date("2020-05-13T03:48:47.210Z")
// 这里是 +0800
// Wed May 13 2020 11:48:47 GMT+0800 (中国标准时间)

一开始以为是 Date 的精度问题

在这个回答中找到答案 为何会有GMT+0805 (中国标准时间)?