簡體   English   中英

之間和在MySql中工作正常,但在T-SQL中則無法正常工作

[英]Between and is working fine in MySql but not in T-SQL

我們有一個使用后端MySQL的項目,該項目最近已遷移到SQL Server2005。當使用MySQL時,如下面給出的查詢可正常使用,因為它給出了意外的結果。

select * from employees where joindate between '2013-05-01' and '2013-05-01'

這里的開始和結束日期是相同的。

MySQL過去曾記錄過參加'2013-05-01'的員工的記錄。 T-SQL在哪里記錄參加“ 2013-04-30”的員工的記錄

表中的joindate列也包含時間部分,我們在其中記錄員工加入日期的確切時間。

有沒有解決此問題的方法。 請讓我知道。

謝謝,dpchimmili。

MySQL used to give the records of employees who joined on '2013-05-01'. Where as T-SQL is giving the records of employees who joined on '2013-04-30'

這就是不同服務器如何實現功能之間的差異:因為mySQL包含介於同一日期之間和具有相同日期的所有日期,所以T-sql僅包括這些日期between的日期,而不包括日期本身。

使用Where語句來解決WHERE joindate >='2013-05-01' and joindate <= '2013-05-01'WHERE joindate ='2013-05-01'

如果只是將值強制轉換為DATE則可以將BETWEEN與TSQL一起使用。

select * from employees 
where CONVERT(DATE, joindate) 
between '2013-05-01' and '2013-05-01'

最好檢查日期是否小於下一個日期,因為這樣可以避免每行計算,並且可以更好地索引。

select * from employees 
where joindate>='2013-05-01' 
  and joindate<DATEADD(day,1,'2013-05-01')

要使用進行測試的SQLfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM