相关疑难解决方法(0)

删除SQL Server中datetime时间部分的最佳方法

从SQL Server中的datetime字段中删除时间部分时,哪种方法提供了最佳性能?

a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)

要么

b) select cast(convert(char(11), getdate(), 113) as datetime)
Run Code Online (Sandbox Code Playgroud)

第二种方法确实发送了更多的字节,但这可能没有转换速度那么重要.

两者似乎都非常快,但在处理数十万或更多行时速度可能会有所不同?

另外,是否有可能有更好的方法来摆脱SQL中日期时间的时间部分?

sql t-sql sql-server datetime date

501
推荐指数
8
解决办法
73万
查看次数

只有没有时间的MS SQL日期

大家好,

我在很长一段时间内遇到了一些困惑,基本上使用T-SQL来构建DateTime SQL类型.基本上,我想将DateTime值设为2008-12-1 14:30:12并将其设为2008-12-1 00:00:00.我们为报告运行的很多查询在WHERE子句中使用了一个日期值,但是我有一天的开始和结束日期值并且使用BETWEEN,或者我找到了一些其他方法.

目前我正在使用以下内容: WHERE CAST(CONVERT(VARCHAR, [tstamp], 102) AS DATETIME) = @dateParam

然而,这看起来有点笨重.我希望会有更简单的东西 CAST([tstamp] AS DATE)

有些地方在网上推荐使用DATEPART()函数,但最后我得到了这样的结果:


WHERE DATEPART(year, [tstamp]) = DATEPART(year, @dateParam)
AND DATEPART(month, [tstamp]) = DATEPART(month, @dateParam)
AND DATEPART(day, [tstamp]) = DATEPART(day, @dateParam)

也许我过分关注小事,如果是的话请告诉我.我只是想确保我写的东西尽可能高效.我想消除任何薄弱环节.

有什么建议?

谢谢,
C

感谢大家的好评.很多有用的信息.我将改变我们的功能以消除操作员左侧的功能.虽然我们的大多数日期列都不使用索引,但它可能仍然是一种更好的做法.

sql t-sql sql-server

40
推荐指数
5
解决办法
13万
查看次数

如何在使用 dateadd() 和 getdate() 时仅获取日期部分

我想显示从当前日期起过去 4 个月的记录。

我不想考虑时间

如何从以下查询中获取日期部分?

where OrderDate >= DATEADD(month, -4, GETDATE()) 
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server date

3
推荐指数
1
解决办法
3832
查看次数

在tsql where子句中应该是YEAR()MONTH()DAY()的顺序是什么?

在tsql的where子句中,YEAR DAY MONTH的顺序应该是多少?

Select * from TABLE_NAME 
WHERE
YEAR(COLUMN_NAME)=YEAR(GETDATE()) --1
and DAY(COLUMN_NAME)=DAY(GETDATE()) --2
and MONTH(COLUMN_NAME)=MONTH(GETDATE()) --3
Run Code Online (Sandbox Code Playgroud)

订单是否会改善查询的运行时间?tsql如何执行此语句?

sql t-sql sql-server query-designer

-2
推荐指数
1
解决办法
304
查看次数

标签 统计

sql ×4

sql-server ×4

t-sql ×4

date ×2

datetime ×1

query-designer ×1