【发布时间】:2015-01-28 10:21:48
【问题描述】:
我需要比较 2 个日期,我有一个日期时间和一个 varchar。 为此,我将 varchar 转换为日期时间并将其插入到临时表中。
我尝试使用 cte 但它不起作用,使用简单的选择结果相同。
为什么我的请求适用于临时表而不适用于 cte?
使用表格:
DECLARE @Tb TABLE
(
DateCreation DATETIME,
DateAchat DATETIME
)
insert into @Tb
SELECT
Convert(datetime, DateCreation, 120), -- varchar
Convert(datetime, DateAchat, 103), -- datetime
FROM MyTable
SELECT DISTINCT * FROM @Tb WHERE DateAchat > DateCreation ORDER BY OrderId ASC
使用 CTE:
WITH cte ( DateCreation, DateAchat )
AS (
SELECT
Convert(datetime, DateCreation, 120), -- varchar
Convert(datetime, DateAchat, 103), -- datetime
FROM MyTable
)
SELECT DISTINCT * FROM cte WHERE DateAchat > DateCreationenter code here
【问题讨论】:
-
当您说它“不起作用”时 - 为什么?您是否收到错误、无结果、错误结果?
-
我的错误是“将 char 数据类型转换为日期时间数据类型导致日期时间值超出范围”
-
这里还有别的东西。该 select 语句的行为不会有所不同。这不是真正的代码 - @Tb 没有 OrderID。
-
是的,我只保留有趣的代码