在T-Sql中添加一天会在'1'附近出现错误语法错误

Ale*_*lex 1 sql t-sql sql-server date

SELECT *  from [TableName]
WHERE
convert(varchar, News.PublishDate , 14)
 BETWEEN convert(varchar, @SearchStringDate, 14) 
 AND  (DATE_ADD((convert(varchar, @SearchStringDate, 14)), INTERVAL  1 DAY))
Run Code Online (Sandbox Code Playgroud)

'1'附近的语法不正确.

什么是不正确的?怎么解决这个问题?请帮我

Rom*_*kar 5

此查询将编译:

select *
from News
where
    convert(varchar, News.PublishDate , 14)
    between convert(varchar, @SearchStringDate, 14) 
    and dateadd(day, 1, convert(varchar, @SearchStringDate, 14))
Run Code Online (Sandbox Code Playgroud)

但我不知道你想得到什么结果.根据文件,14是'hh:mi:ss:mmm'格式.如果你想获得一个日期的记录,试试这个(不知道你的格式@SearchStringDate是什么,最好使用convert适当的格式):

select *
from News
where
    News.PublishDate >= cast(@SearchStringDate as date) and
    News.PublishDate < dateadd(day, 1, cast(@SearchStringDate as date))
Run Code Online (Sandbox Code Playgroud)

另请注意,我在这里使用的PublishDateconvert...- 而是可以使用此columng上的索引.