Convert mixed date values into the ISO standard YYYY-MM-DD, making the data easier to load into SQL databases, validate, sort, filter, and analyze.
Convertir fechas mezcladas al estándar ISO YYYY-MM-DD, haciendo la data más fácil de cargar en SQL, validar, ordenar, filtrar y analizar.
This exercise is for learning and testing purposes only. Do not run scripts against production data, network shares, official HR files, student records, patient records, enterprise repositories, or business-critical folders without proper authorization, backups, testing, least-privilege permissions, change-control approval, and compliance with your organization’s cybersecurity policies.
Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos de producción, carpetas compartidas, archivos oficiales de recursos humanos, expedientes de estudiantes, expedientes de pacientes, repositorios empresariales o carpetas críticas sin autorización, respaldos, pruebas, permisos mínimos, aprobación de control de cambios y cumplimiento de las políticas de ciberseguridad de tu organización.
A CSV file contains dates entered in different formats by different users, systems, or exports. Before loading this data into SQL Server or using it in reporting, the dates must be converted into one consistent ISO format.
Un archivo CSV contiene fechas ingresadas en diferentes formatos por distintos usuarios, sistemas o exportaciones. Antes de cargar esta data en SQL Server o usarla en reportes, las fechas deben convertirse a un formato ISO consistente.
01/15/2026 → 2026-01-1515/01/2026 → 2026-01-152026.01.15 → 2026-01-15Bad dates → ReviewEmployeeID,Name,HireDate 1001,Juan Carballo,01/15/2026 1002,Maria Lopez,15/01/2026 1003,Pedro Martinez,2026-01-15 1004,Ana Torres,2026.01.15 1005,Luis Perez,invalid-date
$sourceFile = "C:\Training\dates_raw.csv" $outputFile = "C:\Training\dates_clean.csv"
$records = Import-Csv -Path $sourceFile
$dateFormats = @(
"MM/dd/yyyy",
"dd/MM/yyyy",
"yyyy-MM-dd",
"yyyy.MM.dd"
)$records | ForEach-Object {
$parsedDate = $null
if ([datetime]::TryParseExact(
$_.HireDate,
$dateFormats,
$null,
[System.Globalization.DateTimeStyles]::None,
[ref]$parsedDate
)) {
$_ | Add-Member -NotePropertyName "HireDate_ISO" -NotePropertyValue $parsedDate.ToString("yyyy-MM-dd") -Force
$_ | Add-Member -NotePropertyName "Date_Status" -NotePropertyValue "Valid" -Force
}
else {
$_ | Add-Member -NotePropertyName "HireDate_ISO" -NotePropertyValue "" -Force
$_ | Add-Member -NotePropertyName "Date_Status" -NotePropertyValue "Review" -Force
}
}$records | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8
$sourceFile = "C:\Training\dates_raw.csv"
$outputFile = "C:\Training\dates_clean.csv"
$dateFormats = @(
"MM/dd/yyyy",
"dd/MM/yyyy",
"yyyy-MM-dd",
"yyyy.MM.dd"
)
$records = Import-Csv -Path $sourceFile
$records | ForEach-Object {
$parsedDate = $null
if ([datetime]::TryParseExact(
$_.HireDate,
$dateFormats,
$null,
[System.Globalization.DateTimeStyles]::None,
[ref]$parsedDate
)) {
$_ | Add-Member -NotePropertyName "HireDate_ISO" -NotePropertyValue $parsedDate.ToString("yyyy-MM-dd") -Force
$_ | Add-Member -NotePropertyName "Date_Status" -NotePropertyValue "Valid" -Force
}
else {
$_ | Add-Member -NotePropertyName "HireDate_ISO" -NotePropertyValue "" -Force
$_ | Add-Member -NotePropertyName "Date_Status" -NotePropertyValue "Review" -Force
}
}
$records | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8| Name | HireDate |
|---|---|
| Juan Carballo | 01/15/2026 |
| Maria Lopez | 15/01/2026 |
| Pedro Martinez | 2026-01-15 |
| Ana Torres | 2026.01.15 |
| Luis Perez | invalid-date |
| Name | HireDate_ISO | Status |
|---|---|---|
| Juan Carballo | 2026-01-15 | Valid |
| Maria Lopez | 2026-01-15 | Valid |
| Pedro Martinez | 2026-01-15 | Valid |
| Ana Torres | 2026-01-15 | Valid |
| Luis Perez | Review |
Date normalization is essential before database imports, ETL processes, dashboard development, and audit reporting. When dates come from multiple sources, never assume one format. Validate explicitly and keep rejected values visible for review.
La normalización de fechas es esencial antes de importaciones a bases de datos, procesos ETL, dashboards y reportes de auditoría. Cuando las fechas vienen de múltiples fuentes, nunca asumas un solo formato. Valida explícitamente y conserva los valores rechazados para revisión.