2010-11-11 66 views

回答

41

比較時,您可以刪除時間部分:

SELECT * 
FROM sales 
WHERE CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, salesDate))) = '11/11/2010' 

另一種方法是改變選擇覆蓋所有的開始和結束的時間日期:

SELECT * 
FROM sales 
WHERE salesDate BETWEEN '11/11/2010 00:00:00.00' AND '11/11/2010 23:59:59.999' 
+1

我沒有得到結果 – 2016-09-30 11:10:21

+0

很抱歉聽到這個消息。你確定你的日期範圍是正確的,並且與數據匹配的數據存在於數據庫中? – Oded 2016-09-30 11:58:13

0
select * from sales where salesDate between '11/11/2010' and '12/11/2010' --if using dd/mm/yyyy 

更正確的方式做到這一點:

DECLARE @myDate datetime 
SET @myDate = '11/11/2010' 
select * from sales where salesDate>[email protected] and salesDate<dateadd(dd,1,@myDate) 

如果只指定的日期,這意味着總午夜。如果你想確保間隔不重疊,有一對>=<

你可以在一個單一的語句中做切換之間,但它只是使用該值的兩倍。

0

事情是這樣的:

select 
    * 
from sales 
where salesDate >= '11/11/2010' 
    AND salesDate < (Convert(datetime, '11/11/2010') + 1) 
0
select 
    * 
from sales 
where 
    dateadd(dd, datediff(dd, 0, salesDate), 0) = '11/11/2010' 
7

我知道它已經在這個問題上一段時間,但我只是在尋找相同的答案,發現這似乎是最簡單的解決方案:

select * from sales where datediff(dd, salesDate, '20101111') = 0 

實際上我用它更多地在最後一天內找東西或二,所以我的版本是這樣的:

select * from sales where datediff(dd, salesDate, getdate()) = 0 

而到今天改變0到1,我得到昨天的交易中,2是在此之前一天,等等。如果你想要的一切的最後一個星期,只是改變了等於一個低於或相等到:

select * from sales where datediff(dd, salesDate, getdate()) <= 7 
+0

不錯的解決方案。如果您將日期格式更改爲'yyyy-MM-dd',確認可以使用h2 db。 – adam0404 2015-05-04 17:31:41

-1

試試這個:與你的解決方案

true 
select cast(salesDate as date) [date] from sales where salesDate = '2010/11/11' 
false 
select cast(salesDate as date) [date] from sales where salesDate = '11/11/2010' 
相關問題