以文本方式查看主题
- Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2)
---- 关于年龄的计算 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173495)
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 9:37:00
-- 关于年龄的计算
请问下列代码怎样通过SQL后台实现,写到哪? Dim tp As TimeSpan = Date.today - CDate(e.DataRow("出生日期")) e.DataRow("年龄") = Math.Round(tp.TotalDays / 365.2422,2)
|
-- 作者:有点蓝
-- 发布时间:2021/12/2 9:47:00
--
access select int(datediff("d",出生日期,now())/365.25) as 年龄 from {表C}
SqlServer select FLOOR(datediff(DY,出生日期,getdate())/365.25) as 年龄 from {表C}
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 10:58:00
--
我想用sqlreplace来做,代码有误,不知怎改DataTables("员工信息").SQLReplaceFor("年龄",Select FLOOR(datediff(DY,出生日期,getdate())/365.25) As 年龄)
[此贴子已经被作者于2021/12/2 10:59:25编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/12/2 11:20:00
--
DataTables("员工信息").SQLReplaceFor("年龄","FLOOR(datediff(DY,出生日期,getdate())/365.25)",true)
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 11:28:00
--
会出错 此主题相关图片如下:qq截图20211202112700.png
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 11:35:00
--
改成DataTables("员工信息").SQLReplaceFor("年龄","FLOOR(datediff(DY,出生日期,getdate())/365.25)",,True)可以计算了
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 11:46:00
--
但1964-03-02这日期e.DataRow("年龄") = Math.Round(tp.TotalDays / 365.2422,2)是58,而DataTables("员工信息").SQLReplaceFor("年龄","FLOOR(datediff(DY,出生日期,getdate())/365.25)",,True)算出来的是57 从现在月份来看应该58才对
[此贴子已经被作者于2021/12/2 11:57:03编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/12/2 12:00:00
--
[此贴子已经被作者于2021/12/2 12:00:19编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/12/2 12:04:00
--
FLOOR是向下取整的,可以改为ROUND
|
-- 作者:fvcfox
-- 发布时间:2021/12/2 14:23:00
--
改成DataTables("员工信息").SQLReplaceFor("年龄","ROUND(datediff(DY,出生日期,getdate())/365.25,0)",,True) 后还是有问题 ,1979-12-17 和 1979-11-16 计算的结果都是42,今天是12月2号,按道理不应该都是42,请问是什么问题
[此贴子已经被作者于2021/12/2 14:32:55编辑过]
|