我的部分数据被错误地解析(由于早期处理文化时出错),因此应该翻转月份和日期。在SQL Server中有一种简单的方法吗?幸运的是,在数据集中它仍然足够早,很容易找到坏数据。
更新我认为这样可行:
SELECT seen, DATEADD(DAY, DATEDIFF(DAY, seen,
CONVERT(DATETIME, CAST(YEAR(seen) AS VARCHAR(4))
+ RIGHT('0'+CAST(DAY(seen) AS VARCHAR(2)),2) +
+ RIGHT('0'+CAST(MONTH(seen) AS VARCHAR(2)),2), 112)), seen)
FROM TermStats
WHERE seen < '2011-09-01' AND DAY(seen) <= 12
但我认为我可以做得更好。所有好日期都在9/1之后。 (你可以说我真的很幸运......哈哈)
SELECT DISTINCT YEAR(seen), MONTH(seen), DAY(seen)
FROM TermStats
ORDER BY YEAR(seen), MONTH(seen), DAY(seen)
2006 2 13
2011 3 9
2011 4 9
2011 5 9
2011 6 9
2011 9 3
2011 9 4
2011 9 5
2011 9 6
答案 0 :(得分:1)
我个人不会通过字符串操作来完成它。完全有可能你可以在存储过程中很好地完成它,但我个人(作为一个没有SQL经验的人)编写一个客户端工具来修复它:
new DateTime(dt.Year, dt.Day, dt.Month);
来翻转错误日期的字段基本上,只要您可以,请避免在文本和其他格式之间进行转换。它只会导致你已经发现的那种痛苦。