-- 将旧数据的时间更新为北京时间（UTC+8）
-- 假设旧数据存储的是UTC时间或服务器本地时间，需要转换为北京时间
-- 
-- 注意：此脚本假设旧数据的时间是UTC时间（或服务器本地时间，需要根据实际情况调整）
-- 如果旧数据已经是北京时间，则不需要运行此脚本
-- 
-- 使用方法：
-- 1. 先备份数据库
-- 2. 根据实际情况调整时间偏移量（CONVERT_TZ 的第二个参数）
-- 3. 运行此脚本

USE `auto_trade_sys`;

-- 检查当前时区设置
SELECT @@global.time_zone, @@session.time_zone;

-- 方法1：如果旧数据是UTC时间，直接加8小时转换为北京时间
-- 更新 entry_time（入场时间）
UPDATE `trades`
SET `entry_time` = DATE_ADD(`entry_time`, INTERVAL 8 HOUR)
WHERE `entry_time` IS NOT NULL
  AND `entry_time` < '2025-01-01 00:00:00';  -- 只更新2025年之前的数据（根据实际情况调整）

-- 更新 exit_time（平仓时间）
UPDATE `trades`
SET `exit_time` = DATE_ADD(`exit_time`, INTERVAL 8 HOUR)
WHERE `exit_time` IS NOT NULL
  AND `exit_time` < '2025-01-01 00:00:00';  -- 只更新2025年之前的数据（根据实际情况调整）

-- 方法2：如果旧数据是服务器本地时间（需要根据服务器时区调整）
-- 例如，如果服务器是UTC+0，则加8小时；如果服务器是UTC+5，则加3小时
-- 请根据实际情况调整 INTERVAL 的值
-- 
-- UPDATE `trades`
-- SET `entry_time` = DATE_ADD(`entry_time`, INTERVAL 8 HOUR)
-- WHERE `entry_time` IS NOT NULL;
-- 
-- UPDATE `trades`
-- SET `exit_time` = DATE_ADD(`exit_time`, INTERVAL 8 HOUR)
-- WHERE `exit_time` IS NOT NULL;

-- 方法3：如果MySQL支持时区转换函数（需要加载时区数据）
-- 首先需要加载时区数据：mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
-- 
-- UPDATE `trades`
-- SET `entry_time` = CONVERT_TZ(`entry_time`, 'UTC', 'Asia/Shanghai')
-- WHERE `entry_time` IS NOT NULL;
-- 
-- UPDATE `trades`
-- SET `exit_time` = CONVERT_TZ(`exit_time`, 'UTC', 'Asia/Shanghai')
-- WHERE `exit_time` IS NOT NULL;

-- 验证更新结果（查看最近几条记录的时间）
SELECT 
    id,
    symbol,
    entry_time,
    exit_time,
    status,
    TIMESTAMPDIFF(HOUR, entry_time, COALESCE(exit_time, NOW())) as duration_hours
FROM `trades`
ORDER BY id DESC
LIMIT 10;

-- 统计信息
SELECT 
    COUNT(*) as total_trades,
    COUNT(CASE WHEN entry_time IS NOT NULL THEN 1 END) as has_entry_time,
    COUNT(CASE WHEN exit_time IS NOT NULL THEN 1 END) as has_exit_time,
    MIN(entry_time) as earliest_entry,
    MAX(entry_time) as latest_entry,
    MIN(exit_time) as earliest_exit,
    MAX(exit_time) as latest_exit
FROM `trades`;
