gpt4 book ai didi

sql - 在SQL Server中无时间比较日期的最佳方法

转载 作者:行者123 更新时间:2023-12-04 11:44:25 29 4
gpt4 key购买 nike

select * from sampleTable 
where CONVERT(VARCHAR(20),DateCreated,101)
= CONVERT(VARCHAR(20),CAST('Feb 15 2012 7:00:00:000PM' AS DATETIME),101)

我想比较没有时间的日期

以上查询可以吗?或您建议的其他更好的解决方案
  • 我正在使用SQL Server 2005
  • 以UTC格式保存在服务器
  • 上的日期
  • 针对此数据的用户属于不同的时区
  • 最佳答案

    不要使用convert-无原因地涉及字符串。一个技巧是,日期时间实际上是数字,而天是整数部分(时间是小数部分);因此,一天是值的 FLOOR :那么,这只是数学运算,而不是字符串-更快

    declare @when datetime = GETUTCDATE()
    select @when -- date + time
    declare @day datetime = CAST(FLOOR(CAST(@when as float)) as datetime)
    select @day -- date only

    就您而言,无需转换回日期时间;并使用范围可以进行最有效的比较(尤其是在建立索引的情况下):
    declare @when datetime = 'Feb 15 2012  7:00:00:000PM'
    declare @min datetime = FLOOR(CAST(@when as float))
    declare @max datetime = DATEADD(day, 1, @min)

    select * from sampleTable where DateCreated >= @min and DateCreated < @max

    关于sql - 在SQL Server中无时间比较日期的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9308635/

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