gpt4 book ai didi

sql - 从字符串转换日期和/或时间时转换失败

转载 作者:行者123 更新时间:2023-12-04 05:28:33 29 4
gpt4 key购买 nike

为什么这个说法会成功?

    SELECT CAST('08:50' as time)

但是这个失败了? tmrec是一个 nvarchar(6) 列并且包含相同的值 '08:50' .自过去 1 小时以来,这让我发疯。
    SELECT   TOP 1 CAST(tmrec as time) 
FROM Instr
WHERE igrp = 'JD'
ORDER BY ino , smallin

This screenshot显示第一个查询的结果。它包含 08:50。然而第二个查询抛出错误。

编辑:

即使这样也不能保证转换仅应用于获取的记录:
    SELECT CAST( tmrec as time)
FROM
(
SELECT TOP 1 tmrec
FROM [ccwise-courts].[dbo].[INSTR]
WHERE igrp = 'JD'
ORDER BY ino , smallin
) v

最佳答案

通常,要查找不良数据,您可以使用如下查询:

SELECT TOP(100) '-->' + REPLACE(tmrec, ' ', '*') + '<--bad'
FROM Instr
WHERE ISDATE(tmrec) = 0

如果您 仍然无法弄清楚,您可以列出所涉及字符的特定 ASCII 代码(这里我每个问题最多 6 个):
SELECT TOP(100) '-->' + REPLACE(tmrec, ' ', '*') + '<--bad',
Char1 = ascii(substring(tmrec,1,1)),
Char2 = ascii(substring(tmrec,2,1)),
Char3 = ascii(substring(tmrec,3,1)),
Char4 = ascii(substring(tmrec,4,1)),
Char5 = ascii(substring(tmrec,5,1)),
Char6 = ascii(substring(tmrec,6,1))
FROM Instr
WHERE ISDATE(tmrec) = 0

有这个 Connect item在应用 WHERE 过滤器之前处理 SQL Server 对 SELECT 子句的 CAST 处理。为了克服这个问题,正如错误报告中所述,您可以使用 CASE 语句:
CAST(CASE WHEN ISDATE(tmrec)=1 THEN tmrec END as time)

关于sql - 从字符串转换日期和/或时间时转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912363/

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