check-timestamp-format.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { AppDataSource } from '../models/index.js';
  2. import { logger } from '../utils/logger.js';
  3. async function checkTimestampFormat() {
  4. try {
  5. await AppDataSource.initialize();
  6. logger.info('[Check] Database connected');
  7. // 查看表结构
  8. const tableStructure = await AppDataSource.query(`
  9. SELECT
  10. COLUMN_NAME,
  11. DATA_TYPE,
  12. COLUMN_TYPE,
  13. COLUMN_DEFAULT,
  14. IS_NULLABLE
  15. FROM INFORMATION_SCHEMA.COLUMNS
  16. WHERE TABLE_SCHEMA = DATABASE()
  17. AND TABLE_NAME = 'user_day_statistics'
  18. AND COLUMN_NAME IN ('created_at', 'updated_at')
  19. ORDER BY COLUMN_NAME
  20. `);
  21. logger.info('[Check] Table structure:');
  22. for (const col of tableStructure) {
  23. logger.info(`[Check] ${col.COLUMN_NAME}:`);
  24. logger.info(`[Check] DATA_TYPE: ${col.DATA_TYPE}`);
  25. logger.info(`[Check] COLUMN_TYPE: ${col.COLUMN_TYPE}`);
  26. logger.info(`[Check] DEFAULT: ${col.COLUMN_DEFAULT}`);
  27. }
  28. // 查看实际数据
  29. logger.info('[Check] Sample data (raw):');
  30. const sampleData = await AppDataSource.query(`
  31. SELECT
  32. id,
  33. account_id,
  34. record_date,
  35. created_at,
  36. updated_at,
  37. DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') AS created_at_formatted,
  38. DATE_FORMAT(updated_at, '%Y-%m-%d %H:%i:%s') AS updated_at_formatted
  39. FROM user_day_statistics
  40. ORDER BY id DESC
  41. LIMIT 10
  42. `);
  43. for (const row of sampleData) {
  44. logger.info(`[Check] ID ${row.id}:`);
  45. logger.info(`[Check] created_at (raw): ${row.created_at}`);
  46. logger.info(`[Check] created_at (formatted): ${row.created_at_formatted}`);
  47. logger.info(`[Check] updated_at (raw): ${row.updated_at}`);
  48. logger.info(`[Check] updated_at (formatted): ${row.updated_at_formatted}`);
  49. }
  50. // 检查是否有 TIMESTAMP 类型的数据需要转换
  51. const timestampCheck = await AppDataSource.query(`
  52. SELECT COUNT(*) as count
  53. FROM user_day_statistics
  54. WHERE created_at IS NOT NULL
  55. `);
  56. logger.info(`[Check] Total records with timestamps: ${timestampCheck[0].count}`);
  57. process.exit(0);
  58. } catch (error) {
  59. logger.error('[Check] Error:', error);
  60. process.exit(1);
  61. } finally {
  62. if (AppDataSource.isInitialized) {
  63. await AppDataSource.destroy();
  64. }
  65. }
  66. }
  67. void checkTimestampFormat();