我正在开发一个C#Windows Forms项目,其中我有一个包含以下字段的表单
Item_ID, Item_Manufacture_Date, Item_Expiry_Date, Price
我将其保存到SQL Server表项中,其中包含以下列:
CREATE TABLE [dbo].[Medicine]
(
[Item_Code] [nvarchar](50) NULL,
[Item_Manufacture_Date] [date] NULL,
[Item_Expiry_Date] [date] NULL,
[Price] [nvarchar](50) NULL
) ON [PRIMARY]
现在正在保存,我将分别在datagridview中显示所有这些内容。
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = " Select * from Medicine";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
我希望在到期日前30天或前几天显示项目。通过比较当前日期。
例如,我想在17-01-2018上显示这些项目,这些项目将于17-02-2018或之前到期。为此,我尝试了这个查询,我知道这个查询是错误的,请更正我,以便我可以看到那些将在未来30天到期的项目。
select
Item_Code, ExpiryDate
from
Medicine
where
Date <= GETDATE() - interval 30 day
请帮忙谢谢大家。
答案 0 :(得分:-1)
您可以使用 DATEADD
https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql
看起来像
SELECT Item_Code, ExpiryDate FROM Medicine WHERE ExpiryDate BETWEEN DATEADD(DAY,-30,GETDATE()) and GETDATE()