如何查询 SQL 服务器中今天日期之后的日期
How to query with dates from SQL Server after today's date
我正在尝试使用 ADO.NET
查询我的数据库
string con = "Data Source=xx.xx.xx.xx\SqlExpress;Network Library=DBMSSOCN; Initial Catalog=DB;User ID=ID;Password=xxxxx;";
SqlConnection connection = new SqlConnection(con);
using (connection)
{
string query = "SELECT * FROM Gigs where Date >= GetDate()";
SqlCommand command = new SqlCommand(query, connection);
var da = new SqlDataAdapter();
connection.Open();
SqlDataReader reader = command.ExecuteReader();
da.SelectCommand = command;
connection.Close();
var ds = new DataSet();
da.Fill(ds);
gigs.DataSource = ds;
gigs.DataBind();
}
代码执行正常,但显示的值不正确。我期待只看到今天之后的日期。然而,我看到了过去和未来的价值。就好像查询只是 SELECT * from Gigs
在 SQL 服务器中,列 Date
的类型为 date
。
我做错了什么?
使用DATEDIFF
.
按如下方式更改您的字符串查询。
string query = "SELECT * FROM Gigs where DATEDIFF(day, GETDATE(), [Date]) > 0";
这将 select 日期列比今天更新的行。
从明天开始获取行的正确方法:
SELECT * FROM Gigs
WHERE [Date] >= CAST(getdate() + 1 as date)
这也行
[Date] >= DATEADD(d, datediff(d, 0,getdate()),1)
使用 DATEDIFF 会使表达式不可搜索,从而导致性能不佳。
string query = "SELECT * FROM Gigs WHERE CONVERT(VARCHAR(10), @date, 111) > CONVERT(VARCHAR(10), GETDATE(),111)"
我正在尝试使用 ADO.NET
查询我的数据库string con = "Data Source=xx.xx.xx.xx\SqlExpress;Network Library=DBMSSOCN; Initial Catalog=DB;User ID=ID;Password=xxxxx;";
SqlConnection connection = new SqlConnection(con);
using (connection)
{
string query = "SELECT * FROM Gigs where Date >= GetDate()";
SqlCommand command = new SqlCommand(query, connection);
var da = new SqlDataAdapter();
connection.Open();
SqlDataReader reader = command.ExecuteReader();
da.SelectCommand = command;
connection.Close();
var ds = new DataSet();
da.Fill(ds);
gigs.DataSource = ds;
gigs.DataBind();
}
代码执行正常,但显示的值不正确。我期待只看到今天之后的日期。然而,我看到了过去和未来的价值。就好像查询只是 SELECT * from Gigs
在 SQL 服务器中,列 Date
的类型为 date
。
我做错了什么?
使用DATEDIFF
.
按如下方式更改您的字符串查询。
string query = "SELECT * FROM Gigs where DATEDIFF(day, GETDATE(), [Date]) > 0";
这将 select 日期列比今天更新的行。
从明天开始获取行的正确方法:
SELECT * FROM Gigs
WHERE [Date] >= CAST(getdate() + 1 as date)
这也行
[Date] >= DATEADD(d, datediff(d, 0,getdate()),1)
使用 DATEDIFF 会使表达式不可搜索,从而导致性能不佳。
string query = "SELECT * FROM Gigs WHERE CONVERT(VARCHAR(10), @date, 111) > CONVERT(VARCHAR(10), GETDATE(),111)"