C# 如何使用Date从sql中获取数据
如何使用Date从sql中获取数据,我使用Date数据类型作为varchar,我想从sql表中获取记录。我想获取上个月的数据,例如今天的日期是2014年11月4日。从今天开始减去一个月2014年10月4日,所以我想在2014年10月4日之前搜索 我试过这个问题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
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'))