【发布时间】:2010-12-07 00:36:09
【问题描述】:
我有一张表格,列出了人们的出生日期(目前是 nvarchar(25))
如何将其转换为日期,然后计算他们的年龄?
我的数据如下所示
ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00
我想看看:
ID Name AGE DOB
1 John 17 1992-01-09 00:00:00
2 Sally 50 1959-05-20 00:00:00
【问题讨论】:
-
为什么要使用 nvarchar(25) 将日期值存储为字符串,而不是使用数据库的本机日期或日期时间类型?
-
该问题被标记为 2005 而不是 2008,因此本机“日期”类型不可用,但肯定是日期时间,并且可以争论 SmallDateTime,因为您不需要准确性。
-
嗨,将日期保留为 varchar 的原因是因为我是从非 SQL 服务器模式导入的,将它们导入为 datetime(和其他日期格式)和 varchar 转换时存在一些问题好的
-
@James.Elsey,所以您在导入时遇到了问题,因此所有日期都有效吗?除非您使用 datetime 或 smalldatetime 和 varchar,否则永远无法确定,您可以让您的导入工作,但还有其他问题。另外,我永远不会存储年龄,它每天都在变化,使用视图
-
@KM 是的,将该数据作为日期导入时存在问题,当时唯一可行的解决方案是将它们作为 nvarchars 导入。此选择将成为夜间工作的一部分,因此存储年龄不应该成为问题
标签: sql sql-server tsql