嘿我在我的where子句中运行SQL服务器&我有大约6个不同日期范围的这些条件。 dateadd函数工作得很好,对我而言可能太好了。我缺少记录,因为在数据库中,如果记录的时间戳超过当前运行时间,它不会被捕获。我可以指定我的日期范围(27-33)天,并说今天上午12点开始而不是当前时间?我如何从指定日期的12点开始获取记录?
即:属于2014年3月11日的记录符合27天范围。但它实际上在DB内
2014年3月11日4:00:00哪些不会检索bc它在凌晨4点以后。
+ "where "
+ "(b.new_SwWarrantyEndDate >= dateadd(day,27,(CONVERT (date, SYSUTCDATETIME()))) AND "
+ "b.new_SwWarrantyEndDate <= dateadd(day,33,(CONVERT (date, SYSUTCDATETIME())))) OR "
日期和DB比较值是我的存在的祸根。首先,让我说通过MS JDBC驱动程序使用类似'dateadd()'的函数可能会造成严重破坏。 SQL运行的方式与通过Studio Management客户端运行的方式不同。它导致了一个非常无害的SQL语句来打败我的Prod环境,因为计划优化器的工作方式不同,所以要小心。对于你的问题,你需要做的是将时间部分放到'00:00:00.000'。有一些方法可以在SQL中使用'dateadd()'来实现,但我建议将它移动到Java代码中。 – CodeChimp
或简单地'CAST(字段AS日期)' –