如何在不使用sql server

时间:2016-07-15 07:14:51

标签: sql sql-server datetime

我尝试使用转换功能将datetime转换为date。但由于表格中有大量数据,因此需求量很大。

如果没有在更短的时间内使用转换功能,还有其他方法可以做到这一点。

查询:

Select * 
from address 
where convert(date,record-created_date) between '6/29/2016' and '6/30/2016'

4 个答案:

答案 0 :(得分:2)

您可以简单地删除CONVERT函数作为以下查询,因此没有时间用于转换,而是您必须在[record-created_date]子句中的WHERE列中添加时间:< / p>

SELECT  * 
FROM    [address]
WHERE   [record-created_date] BETWEEN '6/29/2016 00:00:00:000' AND '6/30/2016 23:59:59:999'

答案 1 :(得分:1)

使用SQL 2008,您可以使用CAST

select cast(record-created_date as date)

在旧版本中,您可以使用DATEADD/DATEDIFF

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, record-created_date))

答案 2 :(得分:1)

您可以在高级中定义2个常量,从而避免在列上使用转换函数:

declare @min_date datetime
declare @max_date datetime

set @min_date = convert(datetime, '06/29/2016', 101)

-- Max date needs to be the next date of your end date
set @max_date = convert(datetime, '06/30/2016', 101) + 1

Select * 
from address 
where record-created_date >= @min_date 
and record-created_date < @max_date

答案 3 :(得分:1)

只需省略转化并将一天添加到结束日期:

where record_created_date between '6/29/2016' and '7/1/2016'

这被解释为<= '7/1/2016 0:00',因此只有在包含第二天午夜的情况下才可以使用此简短形式。否则使用长格式:

where record_created_date >= '6/29/2016' and record_created_date < '7/1/2016'

...或者添加时间:

where record_created_date between '6/29/2016' and '6/30/2016 23:59:59.999'

顺便说一句,我认为最好将日期格式'2016-06-29'用于硬编码日期。

无论如何,缓慢的主要原因很可能是本专栏的缺失索引。