首页 文章

在MySql之间和之间正常工作,但在T-SQL中没有

提问于
浏览
2

我们有一个带有后端MySQL的项目,我们最近迁移到了SQL Server 2005.下面给出的一个查询在使用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 .

2 回答

  • 2

    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' 或jsut WHERE joindate ='2013-05-01' 的解决方法

  • 2

    如果只是将值转换为 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')
    

    An SQLfiddle to test with .

相关问题