首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL帮助...CONVERT(int,CONVERT(datetime,FLOOR(CONVERT(float,getdate()

SQL帮助...CONVERT(int,CONVERT(datetime,FLOOR(CONVERT(float,getdate()
EN

Stack Overflow用户
提问于 2010-11-05 01:20:36
回答 3查看 3K关注 0票数 1

我在调整SQL语句的这一部分时遇到了问题:

代码语言:javascript
复制
HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                                                  FLOOR(CONVERT(float, GETDATE()))) + 2)

通常,使用此语句的页面只列出今天的销售额,我希望将GETDATE()切换为我声明的日期。我尝试了所有不同的格式,但都不起作用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-05 01:30:59

使用DATEADD/DATEDIFF方法将时间部分设置为当前日期的午夜-这是最快的方法,转换为FLOAT可能不可靠:

代码语言:javascript
复制
HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))+2

然后,如果您使用变量(在本例中为@var,在存储过程或函数中),则可以轻松设置您自己的日期:

代码语言:javascript
复制
DECLARE @var DATETIME

SELECT ...
HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, @var), 0))+2

这里假设@var是DATETIME数据类型。否则,您将需要使用SQL Server将隐式转换为DATETIME的日期格式,或者使用CAST/CONVERT显式转换值。

票数 2
EN

Stack Overflow用户

发布于 2010-11-05 01:25:14

如果你想给出你自己的日期,你可以这样做,而不是getdate(),它给出了当前系统的时间戳。

代码语言:javascript
复制
Cast('2010-11-04 13:28:00.000' as datetime)
票数 1
EN

Stack Overflow用户

发布于 2010-11-05 01:30:56

怎么样

代码语言:javascript
复制
declare @myDate as datetime
set @myDate = '11/2/2010'

. . .

HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                                                  FLOOR(CONVERT(float, @myDate ))) + 2)

这样就可以了,它应该会自动对set语句中使用的日期字符串执行类型转换,或者,如果这是在存储过程中,您也可以只传递一个datetime参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4099342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档