64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
const mysql = require('mysql2/promise');
|
|
require('dotenv').config({ override: true });
|
|
|
|
function formatToYYYYMMDD(val) {
|
|
if (!val) return null;
|
|
const s = String(val).trim().replace(/[^0-9]/g, '');
|
|
if (s.length === 8) {
|
|
// YYYYMMDD
|
|
return `${s.substring(0, 4)}-${s.substring(4, 6)}-${s.substring(6, 8)}`;
|
|
} else if (s.length === 6) {
|
|
// YYMMDD -> Assume 20XX
|
|
const year = parseInt(s.substring(0, 2)) > 50 ? '19' + s.substring(0, 2) : '20' + s.substring(0, 2);
|
|
return `${year}-${s.substring(2, 4)}-${s.substring(4, 6)}`;
|
|
}
|
|
|
|
// Try to split by dots or slashes if original had them
|
|
const parts = String(val).trim().split(/[\.\-\/]/);
|
|
if (parts.length === 3) {
|
|
let y = parts[0];
|
|
let m = parts[1].padStart(2, '0');
|
|
let d = parts[2].padStart(2, '0');
|
|
if (y.length === 2) y = '20' + y;
|
|
if (y.length === 4 && m.length <= 2 && d.length <= 2) {
|
|
return `${y}-${m}-${d}`;
|
|
}
|
|
}
|
|
|
|
return val; // Return as is if format is unknown
|
|
}
|
|
|
|
(async () => {
|
|
const pool = mysql.createPool({
|
|
host: process.env.DB_HOST,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASS,
|
|
database: process.env.DB_NAME,
|
|
port: parseInt(process.env.DB_PORT || '3306')
|
|
});
|
|
|
|
const connection = await pool.getConnection();
|
|
try {
|
|
const [rows] = await connection.query('SELECT id, purchase_date FROM asset_core WHERE purchase_date IS NOT NULL AND purchase_date != \'\'');
|
|
console.log(`Found ${rows.length} rows to check.`);
|
|
|
|
let updatedCount = 0;
|
|
for (const row of rows) {
|
|
const original = row.purchase_date;
|
|
const formatted = formatToYYYYMMDD(original);
|
|
|
|
if (formatted !== original && /^\d{4}-\d{2}-\d{2}$/.test(formatted)) {
|
|
await connection.query('UPDATE asset_core SET purchase_date = ? WHERE id = ?', [formatted, row.id]);
|
|
updatedCount++;
|
|
}
|
|
}
|
|
|
|
console.log(`✅ Successfully updated ${updatedCount} rows to YYYY-MM-DD format.`);
|
|
} catch (err) {
|
|
console.error('❌ Error during date migration:', err);
|
|
} finally {
|
|
connection.release();
|
|
await pool.end();
|
|
}
|
|
})();
|