使用SQL Server在C#Windows窗体应用程序中到期日期前30天发出警报

时间:2018-01-16 17:57:02

标签: c# sql-server

我正在开发一个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

请帮忙谢谢大家。

1 个答案:

答案 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()