Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何按剩余时间制作生日提醒

天地  发表于:2011-12-13 16:48:57  
复制

想根据当前的日期之后60天内,显示出过生日的人。比如2011-1-1,那就显示之后60天里会过生日的人。一般看到的都是年与年之间的日期差。有没有只计算月份之间的,并且跨年时候也可以正常使用的?

 

Top
叶海峰 发表于:2011-12-13 17:31:09
between date() and date()+60

煮茶论道 发表于:2011-12-13 18:36:04
如果公历就好办,用只要计算当前时间和生日相差的月份和天数。

天地 发表于:2011-12-19 08:40:08

between date() and date()+60? 这个好像不行呢,是从现在系统时间之后的60天吧。

生日的话是要生日月,日之后的60天,比如1988-1-1的话,等于是把第一个1988换成2011后再加,不过日期好像不好换呢。

 

 

当前时间和生日相差的天数,那不是和以前差的天数吗? 只是计算出生了多少天。想要的是生日提早60天提醒,或者就是查询60天内有生日的人。



天地 发表于:2011-12-19 15:52:50

解决了。。。。。

 

SELECT 人员.部门ID, 人员.姓名, 人员.职务, 人员详细.出生年月, IIf(Month(Date())-Month([出生年月])>-1,Year(Date())-Year([出生年月]),Year(Date())-Year([出生年月])-1) AS 年龄, (Now()-[出生年月]) AS 出生天数, 365-([出生天数]-[年龄]*365) AS 生日剩余天数1, 365-((Now()-[出生年月])-(IIf(Month(Date())-Month([出生年月])>-1,Year(Date())-Year([出生年月]),Year(Date())-Year([出生年月])-1))*365) AS 生日剩余天数
FROM 人员 LEFT JOIN 人员详细 ON 人员.工号ID = 人员详细.工号ID
WHERE  ((365-((Now()-[出生年月])-(IIf(Month(Date())-Month([出生年月])>-1,Year(Date())-Year([出生年月]),Year(Date())-Year([出生年月])-1))*365))<60));

 

 

用计算天数的办法,但是很奇怪,直接用(365-([出生天数]-[年龄]*365))<60) 这个条件查询的话就会弹出 出生天数,和年龄会弹出输入框要求输入数据。但是只是放在查询的字段里就可以正常显示,这个有人知道是什么问题吗?

 



ADSL 发表于:2011-12-19 17:52:22

WHERE DateDiff("d", Date(), Format([出生年月], "MM-DD")) BETWEEN 0 AND 60

  OR DateDiff("d", Date(), DateAdd("yyyy",1,Format([出生年月], "MM-DD")) BETWEEN 0 AND 60

 

Format([出生年月], "MM-DD") 是一个只有没有年份的日期,DataDiff计算时会自动转成当年计算

 

因为会跨年,所以需要另一句

DateDiff("d", Date(), DateAdd("yyyy",1,Format([出生年月], "MM-DD")) BETWEEN 0 AND 60

 

长是长了点,不过能至少能正确计算润年



总记录:5篇  页次:1/1 9 1 :