gpt4 book ai didi

sql - 使用带变量和不带变量的查询时的不同结果

转载 作者:行者123 更新时间:2023-12-04 15:56:47 34 4
gpt4 key购买 nike

我有一个查询可以过滤特定日期时间范围内的记录。出于测试目的,我创建了一个带有变量的查询,但它没有返回预期的结果。

这里是查询:

Declare @vTimeFrom datetime = '2015-04-22 20:00:00.000'
Declare @vTimeTo datetime = '2015-04-23 08:00:00.000'
Declare @pTime datetime = '2015-04-22 21:00:00.000'

Select @pTime
where Convert(Varchar(5),@pTime,108)
BETWEEN Convert(Varchar(5),@vTimeFrom,108) and Convert(Varchar(5),@vTimeTo,108)

输出:

No record found

上面的查询没有返回任何内容。

但是考虑这个查询:

Declare @vTimeFrom datetime = '2015-04-22 20:00:00.000'
Declare @vTimeTo datetime = '2015-04-23 08:00:00.000'
Declare @pTime datetime = '2015-04-22 21:00:00.000'


Select @pTime
where Convert(Varchar(5),'2015-04-22 21:00:00.000',108)
between Convert(Varchar(5),'2015-04-22 20:00:00.000',108)
and Convert(Varchar(5),'2015-04-23 08:00:00.000',108)

输出:

April, 22 2015 21:00:00

最佳答案

Select Convert(Varchar(5),'2015-04-22 21:00:00.000',108), Convert(Varchar(5),@pTime,108) , @pTime

给你答案:

2015- | 21:00 | 2015-04-22 21:00:00

第一个直接格式化假定为 varchar 转换,因此忽略了样式属性,而第二个转换假定为 datetime。

要获得没有变量工作的例子,你可以使用

Convert(Varchar(5), (cast ('2015-04-22 21:00:00.000' as datetime)),108)

确保转换是从日期时间转换过来的。

关于sql - 使用带变量和不带变量的查询时的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798283/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com