前端日期变量-SQL

前端日期变量-SQL,sql,crystal-reports,Sql,Crystal Reports,我的用户在前端系统的sql查询中输入参数。以前我已经成功地传递了字符串,但现在我想传递一个日期变量。我的SQL如下所示: SELECT sum(CASE WHEN P.SNAPSHOT_DATE = '{?startdate}' THEN P.MKT_VAL ELSE 0 END) FROM P 前端有一些sql定义了什么是startdate 正如我所说,有了弦,这就是梦想。不幸的是,我的编译器需要一个日期,因此出现以下错误: Conversion failed when convert

我的用户在前端系统的sql查询中输入参数。以前我已经成功地传递了字符串,但现在我想传递一个日期变量。我的SQL如下所示:

SELECT sum(CASE WHEN P.SNAPSHOT_DATE = '{?startdate}' THEN P.MKT_VAL ELSE 0 END) 
  FROM P
前端有一些sql定义了什么是
startdate

正如我所说,有了弦,这就是梦想。不幸的是,我的编译器需要一个日期,因此出现以下错误:

Conversion failed when converting date and/or time from character string.

我已经尝试用cast和convert to no luck来包围我的变量。

我认为在您的查询中,当您获得用户输入时,可以使用SQL将该输入转换为日期类型

  Set @userinput= select   CAST(@userinput as date)

在前端,通过让用户能够从日历中选择日期,而不是手动输入日期,来限制用户手动输入数据的数量,我认为这样可以减少错误。让我知道转换功能是否有效!:)

这只是一种预感,但crystal reports是否会将该变量作为字符串输入?那么可能是某种不能隐式转换为日期的格式?F.e.如果MySql期望类似“2018-09-15”的字符串,但实际上该字符串的格式类似于“Wed,18-15-09”。在前端(与Crystal Reports分离的程序),我可以指定数据类型。虽然我承认这并不一定意味着Crystal足够聪明,可以拿起这个!如果您知道变量使用的格式,那么您可以在SQL中使用f.e.函数。可能其中一个值不是严格意义上的日期值,当它尝试将其用作日期时会崩溃。