MySQL 年份比较

标签 mysql

几年前,我写了一个查询,现在在回顾这些旧代码时,我试图弄清楚为什么我会按照以前的方式来做。据我所知,其目的是简单地从 UNIX 时间戳中提取年份。谁能告诉我使用的好处是什么:

YEAR(DATE_ADD(DATE_SUB(DATE_ADD(FROM_UNIXTIME( 0 ), INTERVAL FullDate SECOND), INTERVAL @@session.time_zone HOUR_MINUTE), INTERVAL '08:00' HOUR_MINUTE))

而不是简单地:

DATE_FORMAT(FROM_UNIXTIME(FullDate), '%Y')

最佳答案

看起来您正在尝试补偿当前时区的任何内容,然后输出时区 UTC+8:00 中的(年份)当前时间(适用于来自的国家/地区) Wikipedia ).

因此 DATE_ADD(FROM_UNIXTIME( 0 ), INTERVAL FullDate SECOND) 为您提供当前时区的当前时间; DATE_SUB(..., INTERVAL @@session.time_zone HOUR_MINUTE) 将其转换为 UTC,然后 DATE_ADD(..., INTERVAL '08:00' HOUR_MINUTE)将时间转换为 UTC+8:00

如果您不想进行时区转换,那么 DATE_FORMAT(FROM_UNIXTIME(FullDate), '%Y') 将完成这项工作,事实上 FROM_UNIXTIME(FullDate , '%Y')YEAR(FROM_UNIXTIME(FullDate))

关于MySQL 年份比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957908/

相关文章:

php - 在 PHP 中使用 PDO 打开的 SQL 连接是否必须关闭

sql - VIEW 定义中的底层表是什么意思

java - 通知 MySQL 的变化

php - 跨 3 个数据库表的产品搜索

php - 应用php.ini配置,具体upload_max_filesize,服务重启后不生效

mysql - 我们如何将系统时区添加到mysql中的日期时间

mysql - LEFT JOIN 查询中的 WHERE 子句

MySQL外键约束、级联删除

php - 查找两个接近相同的值mysql

mysql - select中的const子查询执行了多少次?