export function isoToSql(iso: string): string | null { const date = new Date(iso); if (Number.isNaN(date.getTime())) return null; return date.toISOString().slice(0, 23).replace("T", " "); } export function sqlDateToIso(value: unknown): string | null { if (value === null || value === undefined) return null; if (value instanceof Date) { if (Number.isNaN(value.getTime())) return null; return value.toISOString(); } const raw = String(value).trim(); if (!raw) return null; if (/[zZ]$/.test(raw) || /[+-]\d{2}:?\d{2}$/.test(raw)) { const date = new Date(raw); if (Number.isNaN(date.getTime())) return null; return date.toISOString(); } const normalized = raw.includes("T") ? raw : raw.replace(" ", "T"); const withMs = /\.\d{1,3}$/.test(normalized) ? normalized : `${normalized}.000`; const date = new Date(`${withMs}Z`); if (Number.isNaN(date.getTime())) return null; return date.toISOString(); }