Classic ASP, IIS6和IIS8的DATE区别
Classic ASP, DATE difference between IIS6 and IIS8
我正在帮助将经典 asp 网站(前端)和 MS 访问数据库(后端)从 Windows 2003 IIS6 服务器迁移到 Windows 2012 IIS 8.5服务器。我对这个查询特别有疑问;
sqlquery1 = "Select RentalNum, CarID, RentalStatus, StartDate, EndDate from table where CDate(EndDate) <= CDate('"&Date()&"') order by CDate(EndDate) desc"
在现有系统上一切正常。在新系统上,返回的结果不是 <= "todays date"。结果显示今天之前的一些日期和今天之后的一些日期。数据库日期字段只是 "text"(我没有设置它)虽然我最初的想法是将模式更改为正确的日期,但我想了解这个问题,特别是因为有很多部分系统使用 date() 和 CDate 使用类似的查询。 IIS 服务器之间是否存在基本日期差异?我查看了浏览器位置,那里一切正常。
有什么指点吗?
检查查询中使用的表达式:
CDate('"&Date()&"')
Date()
函数 returns 系统日期作为 Date/Time 值。但随后该表达式会在 Date/Time 值前后添加引号,从而将其转换为字符串值。然后 CDate()
获取该字符串并将其再次转换回 Date/Time 值。
希望描述能让您相信这些操作充其量是浪费精力。但是,如果两个服务器具有不同的日期格式设置,则完整 CDate()
表达式产生的日期可能不同。
我不确定这是您问题的根源,但您可以轻松排除这种可能性。 Access 数据库引擎支持 Date()
函数,因此您可以直接使用它,而无需先将其转换为字符串,然后再转换回 Date/Time 值。
sqlquery1 = "Select RentalNum, CarID, RentalStatus, StartDate, EndDate " & _
"from [table] where CDate(EndDate) <= Date() order by CDate(EndDate) desc"
如果该更改不能解决问题,接下来检查那些 EndDate 文本值并确保它们被解释为您期望的日期:
SELECT EndDate, CDate(EndDate) AS EndDate_as_date
FROM [table];
您提到了您的 "initial thoughts were to change the schema to proper dates"。我认为这是最好的方法,因为基于日期 Date/Time 的开发比将日期作为字符串更明智。
我正在帮助将经典 asp 网站(前端)和 MS 访问数据库(后端)从 Windows 2003 IIS6 服务器迁移到 Windows 2012 IIS 8.5服务器。我对这个查询特别有疑问;
sqlquery1 = "Select RentalNum, CarID, RentalStatus, StartDate, EndDate from table where CDate(EndDate) <= CDate('"&Date()&"') order by CDate(EndDate) desc"
在现有系统上一切正常。在新系统上,返回的结果不是 <= "todays date"。结果显示今天之前的一些日期和今天之后的一些日期。数据库日期字段只是 "text"(我没有设置它)虽然我最初的想法是将模式更改为正确的日期,但我想了解这个问题,特别是因为有很多部分系统使用 date() 和 CDate 使用类似的查询。 IIS 服务器之间是否存在基本日期差异?我查看了浏览器位置,那里一切正常。
有什么指点吗?
检查查询中使用的表达式:
CDate('"&Date()&"')
Date()
函数 returns 系统日期作为 Date/Time 值。但随后该表达式会在 Date/Time 值前后添加引号,从而将其转换为字符串值。然后 CDate()
获取该字符串并将其再次转换回 Date/Time 值。
希望描述能让您相信这些操作充其量是浪费精力。但是,如果两个服务器具有不同的日期格式设置,则完整 CDate()
表达式产生的日期可能不同。
我不确定这是您问题的根源,但您可以轻松排除这种可能性。 Access 数据库引擎支持 Date()
函数,因此您可以直接使用它,而无需先将其转换为字符串,然后再转换回 Date/Time 值。
sqlquery1 = "Select RentalNum, CarID, RentalStatus, StartDate, EndDate " & _
"from [table] where CDate(EndDate) <= Date() order by CDate(EndDate) desc"
如果该更改不能解决问题,接下来检查那些 EndDate 文本值并确保它们被解释为您期望的日期:
SELECT EndDate, CDate(EndDate) AS EndDate_as_date
FROM [table];
您提到了您的 "initial thoughts were to change the schema to proper dates"。我认为这是最好的方法,因为基于日期 Date/Time 的开发比将日期作为字符串更明智。