SELECT GETDATE()
Run Code Online (Sandbox Code Playgroud)
返回: 2008-09-22 15:24:13.790
我希望那个日期部分没有时间部分: 2008-09-22 00:00:00.000
我怎么能得到它?
这是我使用的:
SELECT CAST(FLOOR(CAST(getdate() as FLOAT)) as DATETIME)
Run Code Online (Sandbox Code Playgroud)
我想可能会有更好更优雅的方式.
要求:
datetime类型,而不是字符串.在MS SQL 2000和2005中,给定日期时间,例如'2008-09-25 12:34:56',获得仅包含'2008-09-25'的日期时间的最有效方法是什么?
这里重复一遍.
大家好,
我在很长一段时间内遇到了一些困惑,基本上使用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
感谢大家的好评.很多有用的信息.我将改变我们的功能以消除操作员左侧的功能.虽然我们的大多数日期列都不使用索引,但它可能仍然是一种更好的做法.
我有一个问题,我的表存储日期为
2009-01-10 10:00:00.000
Run Code Online (Sandbox Code Playgroud)
我有另一个表存储日期为
2009-01-10 12:00:00.000
Run Code Online (Sandbox Code Playgroud)
我知道它们不一样但是日期是,在SQL中是否可以轻松地缩短时间并保留比较日期?谢谢.
我正在尝试找出最有效(最佳性能)的方法来检查当前日期的日期字段.目前我们正在使用:
SELECT COUNT(Job) AS Jobs
FROM dbo.Job
WHERE (Received BETWEEN DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
AND DATEADD(d, DATEDIFF(d, 0, GETDATE()), 1))
Run Code Online (Sandbox Code Playgroud) 我想在sql2005中保存我的日期作为日期(没有小时分钟和秒).我想这样做是因为如果填写小时,分钟和秒,则between函数并不总是正确的.
但是datetime和smalldatetime都不允许这样做,在2008年你有Date列可以做到这一点.
我也发现这个问题可以帮助我,但我不喜欢执行查询的转换:如何删除日期时间值(SQL Server)的时间部分?