我有一个ASP页,这将从SQL服务器数据库表中提取记录。表"order_master“有一个名为order_date的字段。我想构建一个select查询来获取订单日期>用户输入的日期(例如: 07/01/2008)
我尝试了convert和cast,但两者都不起作用。order_date栏目示例数据为4/10/2008 8:27:41 PM实际上,我不知道它是什么类型(varchar/datetime)。
有没有办法做到这一点?
发布于 2008-10-15 19:11:20
我会先检查以确保SQL数据类型是DateTime或SmallDateTime,然后再检查以确保您从页面传入了日期/日期时间值。
如果这两个都是正确的,那么您最好遵循Joel的建议,并在尝试比较之前显式地将这两个值转换为日期。此外,请检查您正在查看的时间值的精度;这似乎很明显,但1/1/200812:00:00.001 AM不等于1/1/2008.12:00:00.000 AM是的,我是凭经验说的。:P
发布于 2008-10-15 19:12:27
日期为07/01/2008是英国/法国注释,因此您需要做的就是:
SELECT myColumn FROM myTable WHERE myDateField >= convert(datetime, '07/01/2008 00:00:00', 103)
此代码将获取myDateField的日期为2008年1月7日的所有行,从00:00:00 (hh:mm:ss)开始,因此,当天的第一秒...简而言之,就是一整天。
有关更多信息,请访问check Books online on MSDN
发布于 2008-10-15 19:02:32
您可以像这样创建一个存储过程
CREATE PROCEDURE GetOrders
@OrderDate DATETIME
AS
SELECT
*
FROM order_master
WHERE Order_Date > @OrderDate
GO然后,在通过ASP代码调用存储过程之前,只需将用户输入转换为日期即可。
编辑
我刚刚注意到关于列类型的注释,您可以运行以下命令
sp_help order_master获取列信息以查找order_date的数据类型。
https://stackoverflow.com/questions/205975
复制相似问题