我想选择日期介于dd / mm / yyyy和dd / mm / yyyy之间的数据
如果我在同一个月的日期找到数据
例如
SELECT *
FROM Table Name
WHERE date between '21/07/2014' and '29/07/2014'
如果是两个不同月份之间的日期..结果为空
例如
SELECT *
FROM Table Name
WHERE date between '21/07/2014' and '1/08/2014'
答案 0 :(得分:2)
在SQL Server中使用日期时,要明确付出代价。在您的第二个示例中,可能SQL Server将第二个日期转换为2014年1月8日,因为它将采用美国样式格式,如mm/dd/yyyy
。我总是用yyyy-mm-dd
格式写我的日期,但使用ISO YYYYMMDD
格式可能更好,因为SELECT *
FROM TableName
WHERE date between '20140721' and '20140801'
(正如marc_s指出的那样)是一种更通用的格式:
{{1}}
答案 1 :(得分:1)
日期没有格式。由于你引用了C#,这个代码似乎来自.NET调用者 - 在这种情况下,参数化:
DateTime from = ..., to = ... // perhaps DateTime.Parse or DateTime.ParseExact,
// but perhaps DateTime.Now.Date.Add(...)
cmd.CommandText = @"
SELECT *
FROM Table Name
WHERE date between @from and @to";
cmd.Parameters.AddWithValue("from", from);
cmd.Parameters.AddWithValue("to", to);
现在没有任何歧义。
答案 2 :(得分:0)
使用ISO 8601通用格式。例如'2007-04-05T14:30'
。无论语言环境设置如何,都会对其进行解释。
答案 3 :(得分:0)
如果你绝对想要使用样式103的DD / MM / YY格式,如果你转换,即
select *
from tbl
where dt between convert(date,'21/07/2014',103) and convert(date,'01/08/2014',103)
答案 4 :(得分:0)
你也可以像这样编写你的查询
SELECT * FROM表名 在'21 -Aug-2014'和'2014年9月1日'之间的日期