C# 如何使用Date从sql中获取数据

C# 如何使用Date从sql中获取数据,c#,sql-server-2008,datetime,datetime-format,C#,Sql Server 2008,Datetime,Datetime Format,如何使用Date从sql中获取数据,我使用Date数据类型作为varchar,我想从sql表中获取记录。我想获取上个月的数据,例如今天的日期是2014年11月4日。从今天开始减去一个月2014年10月4日,所以我想在2014年10月4日之前搜索 我试过这个问题 SELECT * FROM [IndxRpt] WHERE EcrCylinderNo IS NULL AND OrderDate <= '04/10/2014' 选择* 从[IndxRpt] 其中EcrCylinder

如何使用Date从sql中获取数据,我使用Date数据类型作为varchar,我想从sql表中获取记录。我想获取上个月的数据,例如今天的日期是2014年11月4日。从今天开始减去一个月2014年10月4日,所以我想在2014年10月4日之前搜索

我试过这个问题

SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
  AND OrderDate <= '04/10/2014'
选择*
从[IndxRpt]
其中EcrCylinderNo为NULL

和OrderDate如果出于某种原因,您无法将列更改为适当的数据类型,我建议将其转换为datetime进行查询

例如

选择*
从[IndxRpt]
其中EcrCylinderNo为NULL

和CAST(OrderDate作为DateTime)通常您应该使用OrderDate作为DateTime数据类型。但仍然要回答您的问题,您需要在Datetime数据类型中强制转换OrderDate,然后在WHERE条件下对其应用任何逻辑操作进行过滤

因此,您的查询将如下所示:

SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
AND CONVERT(DATETIME,OrderDate,103) <= CONVERT(DATETIME,'04-OCT-2014',103)
选择*
从[IndxRpt]
其中EcrCylinderNo为NULL

如果OrderDate列类型为varchar,则转换(DATETIME,OrderDate,103)1),而不是使用日期数据类型为varchar的字符串值“iam”“为什么??我将日期数据类型用作varchar为什么?为什么不把它们保存在<代码>日期时间> />代码>代码>数据提要2/代码>列类型中,这正是你想要的?而且,如果你想考虑一个最大的结束日期,为什么不在SQL中指定它呢?您应该始终使用最合适的数据类型——毕竟,这就是它们的用途@SonerGönül此数据库是以前创建的,现在我只是升级应用程序。我没有更改数据库的权限。建议以“DD-MMM-YYYY”格式传递日期时间值,以避免日期时间转换错误。
SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
  AND CAST(OrderDate as DateTime)<=  '04/10/2014'
SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
AND CONVERT(DATETIME,OrderDate,103) <= CONVERT(DATETIME,'04-OCT-2014',103)
SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
AND (CONVERT(DATE, OrderDate) BETWEEN CONVERT(DATE, GETDATE()) AND CONVERT(DATE, '04-OCT-2014')) 
--If SQL Server 2008 or above 

--Or For below
SELECT * 
FROM [IndxRpt] 
WHERE EcrCylinderNo IS NULL 
AND (CONVERT(DATETIME, OrderDate) BETWEEN GETDATE() AND CONVERT(DATETIME, '04-OCT-2014'))