关于ASP select语句中长日期与短日期比较的问题
使用环境为ASP+ACSESS数据库里时间为长日期格式现在要与短日期(变量)比交做SELECT筛选例:数据库为长日期格式:2013-05-3110:05:36变量为短日期...
使用环境为ASP+ACSESS
数据库里时间为长日期格式
现在要与短日期(变量)比交做SELECT筛选
例:
数据库为长日期格式:2013-05-31 10:05:36
变量为短日期格式:2013-05-31
我现在用
select * form mytalbe where 数据库里长日期字段名-指定短日期变量>=0
结果不包含当天指定日期(2013-05-31)数据,大家有什么办法没?
谢谢!
后来分析了一下
因为有分秒,出现=0(整点输入的数据)。。。基本不可能。。
查了百度说可以用转换函数,
但DateDiff 在SQL语句中出错,不能用 展开
数据库里时间为长日期格式
现在要与短日期(变量)比交做SELECT筛选
例:
数据库为长日期格式:2013-05-31 10:05:36
变量为短日期格式:2013-05-31
我现在用
select * form mytalbe where 数据库里长日期字段名-指定短日期变量>=0
结果不包含当天指定日期(2013-05-31)数据,大家有什么办法没?
谢谢!
后来分析了一下
因为有分秒,出现=0(整点输入的数据)。。。基本不可能。。
查了百度说可以用转换函数,
但DateDiff 在SQL语句中出错,不能用 展开
2个回答
展开全部
你描述得不是很清楚啊,不知道你需要的数据中要不要包含指定日期当天的数据,如果包含,那么你的SQL语句是没问题的,因为短日期格式2013-05-31相当于2013-05-31 00:00:00,那么用任何一个大于这个时刻的时间值去减这个时刻,结果必然是大于等于0的(等于0虽然不太可能,但大于0则是必须的,0.0001也是大于0啊)。
如果需要的数据中不想包含指定日期当天的数据(或者说要从第二天算起),则修改一下即可:
select * form mytalbe where 数据库里长日期字段名-指定短日期变量>=1。
补充说一句,在ACCESS的SQL语句中是可以用DateDiff的,不但如此,几乎所有VBA中的字符串函数、数值函数都可以在ACCESS中直接使用,因为这两种东西都是微软的亲生儿子。
比如用Format函数来处理日期是很方便的:
获取当天数据:select * form mytalbe where Format(日期字段,'yyyymmdd')=Format(Now(),'yyyymmdd')
获取当月数据:select * form mytalbe where Format(日期字段,'yyyymm')=Format(Now(),'yyyymm')
等等。
用DateDiff的话必须注意,如果日期是由SQL外部输入的,要用##做定界符,如:
rq="2013-05-31"
sql="select * form mytalbe where DateDiff('d',#" & rq & "#,长日期字段名)>=0"
还有一点要注意,较早的日期在前面,较晚的日期在后面
如果需要的数据中不想包含指定日期当天的数据(或者说要从第二天算起),则修改一下即可:
select * form mytalbe where 数据库里长日期字段名-指定短日期变量>=1。
补充说一句,在ACCESS的SQL语句中是可以用DateDiff的,不但如此,几乎所有VBA中的字符串函数、数值函数都可以在ACCESS中直接使用,因为这两种东西都是微软的亲生儿子。
比如用Format函数来处理日期是很方便的:
获取当天数据:select * form mytalbe where Format(日期字段,'yyyymmdd')=Format(Now(),'yyyymmdd')
获取当月数据:select * form mytalbe where Format(日期字段,'yyyymm')=Format(Now(),'yyyymm')
等等。
用DateDiff的话必须注意,如果日期是由SQL外部输入的,要用##做定界符,如:
rq="2013-05-31"
sql="select * form mytalbe where DateDiff('d',#" & rq & "#,长日期字段名)>=0"
还有一点要注意,较早的日期在前面,较晚的日期在后面
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询