風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 13 楼 ]
回复
是的,用 pgsql 测试的时候用来构造测试数据。
2023/11/24 14:55:05
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 14 楼 ]
回复
风云,把你写的代码放到ASP文件后提示when附近有语法错误。
暂时解决方法:
把用户提交的特殊农历生日如xxxx-2-29 xxxx-2-30,入库前更改为xxxx-2-28。
这样每年都会在农历2-28发送生日邮件提醒。
2023/11/25 21:58:10
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 15 楼 ]
回复
风云,把你写的代码放到ASP文件后提示when附近有语法错误。
那个 SQL 语句我是在 SQL Server 2016 上测试的。
2-29 还有可能是合法的日期,2-30 就完全不存在了,这个需要在入库前校验。
2023/11/25 22:05:36
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 16 楼 ]
回复
我是在SQL2005下, 用ASP文件测试2000-2-29出错。
2023/11/25 22:10:52
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 17 楼 ]
回复
2023/11/25 22:12:06
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 18 楼 ]
回复
nongli
XXX-2-29
1990-5-18
2000-12-12
其实想在打开ASP文件语句查询时,里面判断,14天内过生日的人数,当遇到XXX-2-29(如2000-2-29 2000-2-30),改为XXXX-2-28,就不会出现错误了。不知道怎么加
sql="select count(*) as ttshu from shengri where (user="&session("user")&" and gongnong=0 and DateDiff(day,getdate(),dateadd(year,DateDiff(year,birthday,getdate()),birthday))between 0 and 14) or (user="&session("user")&" and gongnong=1 and shengrin<>'2-29' and shengrin<>'2-30' and DateDiff(day,'"&(jinnongli)&"',dateadd(year,DateDiff(year,nongli,'"&(jinnongli)&"'),nongli))between 0 and 14)"
2023/11/25 22:20:44
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 19 楼 ]
回复
看到了一个 user 条件,你这个是查询某个用户最近14天内是否公历或农历生日吗?
2023/11/25 22:35:16
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 20 楼 ]
回复
是的。 ASP网站,有一个栏目是生日, 用户可以提交亲人朋友的阳历或农历生日,当最近14天内的亲人朋友有过生日的,会在首页提示过生日的人数。并且生日当天会自动发送邮件提醒(每天早上定时计划任务打开ASP文件,检索符合条件发送邮件)
gongnong=0 表示阳历生日
gongnong=1 表示农历生日
jinnongli 今天的农历日期 格式如2023-10-13
nongli 用户提交的农历生日 格式如2000-2-18
shengrin 用户提交的农历生日 格式如2-18
birthday 用户提交的阳历生日 格式如2023-11-25
shengrin<>'2-29' and shengrin<>'2-30' 本来想用这个排除2-29 2-30,没效果。
2023/11/25 22:43:10
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 21 楼 ]
回复
这样可以起到格式化 shengrin 的效果:
case when shengrin in ('2-29', '2-30') then '2-28' else shengrin end
2023/11/25 22:50:05
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 22 楼 ]
回复
sql="select count(*) as ttshu from shengri where (user="&session("user")&" and gongnong=0 and DateDiff(day,getdate(),dateadd(year,DateDiff(year,birthday,getdate()),birthday))between 0 and 14) or (user="&session("user")&" and gongnong=1 and shengrin<>'2-29' and shengrin<>'2-30' and (case when shengrin in ('2-29', '2-30') then '2-28' else shengrin end)and DateDiff(day,'"&(jinnongli)&"',dateadd(year,DateDiff(year,nongli,'"&(jinnongli)&"'),nongli))between 0 and 14)"
改成上面后,提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]在应使用条件的上下文(在 'and' 附近)中指定了非布尔类型的表达式。
2023/11/25 22:54:08
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 23 楼 ]
回复
我没看懂你为什么要加shengrin这个条件。好像也有没有去拼接 2023-2-30 这样的非法日期啊。
2023/11/25 23:01:40
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 24 楼 ]
回复
加这个,是因为之前使用ACCESS数据库好像有效果,就是过滤掉2-29 2-30的数据
shengrin过滤了,也就过滤掉了nongli字段包含xxxx-2-29 xxxx-2-30的数据了。
2023/11/25 23:04:25
IP:已设置保密