【发布时间】:2016-05-03 00:39:40
【问题描述】:
我正在尝试使用以下 SQL 语句,但一旦触发查询,我就会收到 '从字符串转换日期时间时转换失败。' 错误消息。
我尝试将 where 子句中的会计期和日期转换为有效的日期时间,但是一旦我使用过滤器进行日期时间查询,就会失败。
如果我将相同的结果存储在临时表中,然后在临时表上使用日期过滤器,那么我会得到预期的结果。
你能检查一下下面的查询有什么问题吗?
WITH TEMP_LEDGERPERIOD ( DATAAREAID, PERIODSTART, PERIODEND, FISCALPERIOD )
AS
(
SELECT dataareaid, PERIODSTART, PERIODEND, CONVERT(DATETIME, '01-' + COMMENTARIES) AS FiscalPeriod
FROM LEDGERPERIOD LPT WITH (NOLOCK)
WHERE (COMMENTARIES NOT LIKE '%OPEN' and COMMENTARIES NOT LIKE '%CLOSE')
)
Select *
from TEMP_LEDGERPERIOD
where FiscalPeriod BETWEEN '2016/01/01' AND '2016/02/01'
【问题讨论】:
-
commentaries长什么样子? -
WHERE 子句或 CONVERT 函数是否有错误?注释掉 WHERE 子句,看看你是否仍然得到错误。
标签: sql sql-server