我有一个表格机智客户,其到达日期和出发日期的格式为“2014-25-11 00:00:00.000'”。我正在创建一个查询,以选择那些客户,但我有一个错误
从字符串转换日期和/或时间时转换失败。
但我想只找到日期2014-25-11
使用的SQL查询
select FirstName, LastName
from customer
where ArrivalDate > '%2014-25-11 00:00:00.000%'
and DepartureDate < '%2014-29-11 00:00:00.000%'
有人可以帮我写这个查询吗?
答案 0 :(得分:1)
从字符串转换日期和/或时间时转换失败。
从您的值中删除'%'
试试这个:
select FirstName and LastName
from customer
where ArrivalDate > CAST('2014-25-11' AS DATE)
and DepartureDate < CAST('2014-29-11' AS DATE)
答案 1 :(得分:0)
如果你只想在2014-25-11那天找到那些,你可以使用这个
select FirstName and LastName from customer
where DATEPART(YEAR,ArrivalDate) = 2014
and DATEPART(month,ArrivalDate) = 25
and DATEPART(day,ArrivalDate)= 11
答案 2 :(得分:0)
如果你想要FirstName和LastName,你需要一个逗号而不是&#34;和&#34;。同时删除%通配符。以下查询在MS SQL Server中工作。
SELECT FirstName, LastName
FROM customer
WHERE CAST(ArrivalDate AS DATE) = '11/25/2014';
如果您希望在两个日期之间返回的值与您上面的值相似,请尝试:
SELECT FirstName, LastName
FROM customer
WHERE CAST(ArrivalDate AS DATE) BETWEEN '11/25/2014' AND '11/29/2014';
答案 3 :(得分:0)
我担心您必须订购日期部分,以便订购年度月份日期。
这样,即使您比较字符串,2014年11月26日即将到达和离开。构建日期字符串的方式,它不会那样排序。 2014-26-11
不在2014-25-11
和2014-29-11
之间。
select *
from customer c
outer apply (
select ArrivalDate = substring(c.ArrivalDate,1,4)
+substring(c.ArrivalDate,9,2)
+substring(c.ArrivalDate,6,2)
, DepartureDate = substring(c.DepartureDate,1,4)
+substring(c.DepartureDate,9,2)
+substring(c.DepartureDate,6,2)
) p
where '20141126' between p.ArrivalDate and p.DepartureDate