TimeValue不是可识别的内置函数名称

时间:2015-07-15 19:28:38

标签: sql-server database ms-access coldfusion-11

我需要帮助调整下面的查询才能在ms sql下工作。我将Access数据库迁移到SQL Server,下面的查询正在下降。

我收到以下错误:

“执行数据库查询时出错。[Macromedia] [SQLServer JDBC驱动程序] [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

1 个答案:

答案 0 :(得分:1)

VBA中的TimeValue函数返回日期字符串的时间部分作为日期变体。

对于MSSQL 2008及更高版本,您可以使用以下方式转换为时间:

CAST(M.DateToShow AS time)

而不是

TimeValue(M.DateToShow)

参考文献: