我知道有几篇关于从日期时间列中剥离时间部分的帖子。并且每个人都建议 DATEADD 和 DATEDIFF 方法对性能来说是最好的,个人不应该采用将日期值转换为 varchar 的过程。所以我想使用下面的函数,但我不明白为什么我收到的结果仍然具有与其关联的时间值,尽管时间全为零?
提供更多关于为什么我想了解这个结果的信息。我有一个存储过程,我希望指定以下内容:
DECLARE @DateShippedBegin DATETIME
DECLARE @DateShippedEnd DATETIME
SET @DateShippedBegin = dateadd(dd, datediff(dd, 0, @DateShipped), 0)
SET @DateShippedEnd = dateadd(dd, datediff(dd, 0, @DateShipped) + 1, 0)
WHERE O.date_shipped >= @DateShippedBegin and O.date_shipped < @DateShippedEnd
Run Code Online (Sandbox Code Playgroud)
但是当我使用基本日期格式执行该程序时,我没有收到任何结果,因此我试图了解我的程序采用的最佳概念。
Select DATEADD(dd, DATEDIFF(dd, 0, Getdate()), 0) from orders where order_no =
'1247401'
Run Code Online (Sandbox Code Playgroud)
起始日期值示例:
2017-05-010 08:40:18.287
Run Code Online (Sandbox Code Playgroud)
查询结果示例:
2017-05-10 00:00:00.000
Run Code Online (Sandbox Code Playgroud)