【发布时间】:2015-07-15 19:28:37
【问题描述】:
我需要帮助调整下面的查询以在 ms sql 下工作。我将 Access 数据库迁移到 SQL Server,下面的查询正在下降。
我收到以下错误:
“执行数据库查询时出错。[Macromedia][SQLServer JDBC Driver][SQLServer]'TimeValue' 不是可识别的内置函数名。”
提前谢谢你。
SELECT M.MessageID, M.Subject, M.ShortDesc, M.subName, M.Submitter, C.CategoryName,
DateValue(
IIF (
DatePart( 'w', IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ) = 1,
DateAdd( 'd', 1, IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ),
IIF(
DatePart( 'w', IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ) = 7,
DateAdd( 'd', 2, IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ),
IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow))
),
)
) AS DateToShow
FROM MessageInfo M, Categories C
WHERE M.Approved = true
AND C.CategoryID = M.Category
ORDER BY C.CategoryPreference, C.CategoryName,
DateValue(
IIF (
DatePart( 'w', IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ) = 1,
DateAdd( 'd', 1, IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ),
IIF(
DatePart( 'w', IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ) = 7,
DateAdd( 'd', 2, IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow)) ),
IIF(TimeValue(M.DateToShow)<='10:00',M.DateToShow,DateAdd('d',1,M.DateToShow))
),
)
)
DESC, M.Subject
【问题讨论】:
-
不确定 TimeValue 是什么?那是访问功能吗?如果是这样,它会返回什么?我建议在使用 DatePart 和 DateAdd 时不要使用这些 datepart 快捷方式。这是一个偏好,但将实际名称放在那里会更清楚。
标签: sql-server database ms-access coldfusion-11