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