1
115
我必须承认我以前从未见过马特展示的地板浮子转换。我必须测试一下。 我测试了一个纯select(它将返回日期和时间,这不是我们想要的)、这里的主要解决方案(floor)、这里提到的一个常见的“幼稚”解决方案(stringconvert)和我正在使用的解决方案(因为我认为它是最快的)。 我在测试服务器MS SQL server 2005上测试了这些查询,该服务器运行在Win 2003 SP2服务器上,Xeon 3GHz CPU运行在最大内存(32位,约为3.5 Gb)上。这是我所在的夜晚,机器几乎空载空转。这一切都是我一个人做的。 下面是我的测试运行日志,它从一个包含时间戳的大表中选择,时间戳一直到毫秒级。此特定数据集包括2.5年以上的日期。这个表本身有超过1.3亿行,所以我把行数限制在前100万行。
我们在这里看到了什么?
从这一点来看,DateAdd(至少在这个特殊情况下)比floor cast方法稍微快一点。
我的服务器上有什么奇怪的东西吗? |
2
25
DateDiff(Day,0,GetDate())与DateDiff(Day,'1900-01-01',GetDate())相同 由于DateDiff返回一个整数,因此您将获得自1900年1月1日以来经过的天数。然后将该整数天数添加到1900年1月1日。净效果是去除时间成分。
最后一个,几秒钟,需要特殊处理。如果你使用1900年1月1日,你会得到一个错误。 两个datetime列的差异导致运行时溢出。
|
3
12
之所以有效,是因为将datetime强制转换为float会给出自1900年1月1日以来的天数(包括一天的分数)。它删除了小数天,并保留了整数天,然后可以将其转换回datetime。 |
4
7
在SQL server 2012中使用
|
5
1
|
6
0
要获取YYYY-MM-DD,请使用:
哎呀,他想要的是日期时间而不是字符串。与Oracle中的TRUNC()等效。您可以将我发布的内容追溯到DateTime:
|
7
0
CONVERT、FLOOR和DATEDIFF将执行相同的操作。 How to return the date part only from a SQL Server datetime datatype |
8
0
下面的链接中介绍了三种方法。我还没有对它们进行性能测试以确定哪一个最快。 |
9
0
|
10
-1
|
11
-1
|
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
Java · 使用交叉应用同时显示两列 2 年前 |