找出用户是否超过18 T-SQL

时间:2013-11-18 12:25:47

标签: tsql

我有一张包含格式(YYYYMMDD)生日的表格,例如'19951118'

找出用户是否满18岁的最有效方法是什么?

我在帖子中添加我的解决方案而不是评论: SELECT *来自DATEADD(YEAR,18,BirthDay)>的用户DATEADD(dd,DATEDIFF(dd,0,getdate()),0)

2 个答案:

答案 0 :(得分:1)

如果您将出生日期存储为varchar,那么

WHERE DateDiff(month,CONVERT(datetime,'19951118',112),getdate())>=18*12

SQLFiddle demo

答案 1 :(得分:1)

假设你的dateofbirth是char(8),这将在一张大桌子上表现良好,因为列生日没有计算。

WHERE 
 REPLACE(CONVERT(CHAR(10), DATEADD(YEAR,-18,CURRENT_TIMESTAMP), 126), '-', '') 
 >= birthday