从字符串转换日期 and/or 时间时转换失败,其中 varchar 字段作为日期
Conversion failed when converting date and/or time from character string with varchar field as date
我正在尝试将 MySQL 查询转换为 SQL 服务器,这是我目前所了解的。 SQL 服务器似乎对 table 将日期(在本例中为截止日期)存储为 VARCHAR
这一事实感到不满。因此,考虑到这一点,我尝试使用 CONVERT(DATE, EXPRESSION) 转换它们。不幸的是,我不断收到 "Conversion failed when converting date and/or time from character string" 错误消息。我不确定如何尝试转换。
SELECT MYSQL_locationstesting.*, MYSQL_locations.sitenumb
FROM MYSQL_locationstesting
INNER JOIN MYSQL_locations
ON MYSQL_locationstesting.siteid=MYSQL_locations.id
WHERE MYSQL_locationstesting.display = 1
AND (CONVERT(DATE, MYSQL_locationstesting.duedate) < CAST(GETDATE() AS DATE)
AND MYSQL_locations.active = 1
OR CONVERT(DATE, MYSQL_locationstesting.duedate) BETWEEN DATEADD(DAY, -1, CAST(GETDATE() AS DATE))
AND DATEADD(DAY, 5, CAST(GETDATE() AS DATE)))
您在 MySQL table 中有一些数据不是有效的日期值。
使用 TRY_CONVERT() 并为无法转换的字符串提供您想要的任何默认值。
从 SQL Server 2012 开始,您有 TRY_PARSE/CONVERT/CAST 可以提供帮助。您看到该错误是因为无法将某些内容显式转换为日期类型。
SELECT CONVERT(DATE, 'This will break!')
SELECT *
FROM your_table
WHERE TRY_PARSE(your_column AS DATE) IS NULL
第二个查询将 return 所有无法转换为日期类型的值。因此,您可以将其添加到查询的底部以将它们全部过滤掉:
AND TRY_PARSE(your_column AS DATE) IS NOT NULL
这将从您的结果中删除它们,因此如果您仍想以某种方式捕获这些值,请谨慎使用。
我正在尝试将 MySQL 查询转换为 SQL 服务器,这是我目前所了解的。 SQL 服务器似乎对 table 将日期(在本例中为截止日期)存储为 VARCHAR
这一事实感到不满。因此,考虑到这一点,我尝试使用 CONVERT(DATE, EXPRESSION) 转换它们。不幸的是,我不断收到 "Conversion failed when converting date and/or time from character string" 错误消息。我不确定如何尝试转换。
SELECT MYSQL_locationstesting.*, MYSQL_locations.sitenumb
FROM MYSQL_locationstesting
INNER JOIN MYSQL_locations
ON MYSQL_locationstesting.siteid=MYSQL_locations.id
WHERE MYSQL_locationstesting.display = 1
AND (CONVERT(DATE, MYSQL_locationstesting.duedate) < CAST(GETDATE() AS DATE)
AND MYSQL_locations.active = 1
OR CONVERT(DATE, MYSQL_locationstesting.duedate) BETWEEN DATEADD(DAY, -1, CAST(GETDATE() AS DATE))
AND DATEADD(DAY, 5, CAST(GETDATE() AS DATE)))
您在 MySQL table 中有一些数据不是有效的日期值。
使用 TRY_CONVERT() 并为无法转换的字符串提供您想要的任何默认值。
从 SQL Server 2012 开始,您有 TRY_PARSE/CONVERT/CAST 可以提供帮助。您看到该错误是因为无法将某些内容显式转换为日期类型。
SELECT CONVERT(DATE, 'This will break!')
SELECT *
FROM your_table
WHERE TRY_PARSE(your_column AS DATE) IS NULL
第二个查询将 return 所有无法转换为日期类型的值。因此,您可以将其添加到查询的底部以将它们全部过滤掉:
AND TRY_PARSE(your_column AS DATE) IS NOT NULL
这将从您的结果中删除它们,因此如果您仍想以某种方式捕获这些值,请谨慎使用。