【问题标题】:Passing datetime as parameter in sybase stored procedure在sybase存储过程中将日期时间作为参数传递
【发布时间】:2021-09-01 10:27:15
【问题描述】:

我想传递一个日期时间作为 sybase 存储过程的参数并将其用于查询,但我总是得到错误

SQL Error: Syntax error during explicit conversion of VARCHAR value '2021-06-16 13:28:48.390' to a DATETIME field

我的存储过程是这样的:

create proc mystoredprocedure
       @mydate varchar(50)
select * from mytable where date =CONVERT(DATETIME, @mydate, 121)

调用: exec mystoredprocedure '2021-06-16 13:28:48.390'

用于 CONVERT 代码 121 的 Sybase 文档:

yyyy-mm-dd hh:nn:ss.sss (24 hour clock, ODBC canonical with milliseconds, 4-digit year)

有人知道我为什么会收到这个错误吗?

非常感谢!

安迪

【问题讨论】:

  • 为什么使用 varchar 作为 proc 参数而不是日期时间?您可以将字符串中的多种不同日期格式传递给 datetime 参数,它会处理它们。

标签: sybase


【解决方案1】:

假设这是 Sybase ASE ...

我无法在我的 ASE 15.7 实例中重现该问题(即,您的代码适用于我)。

您能否尝试使用set dateformat 命令明确告诉 ASE 如何解析字符串?

来自手册回复:set command

set dateformat format – 设置日期的顺序 用于输入日期时间、小日期时间、日期的部分 (month/day/year) 或时间数据。有效的参数是'mdy'、'dmy'、'ymd'、'ydm'、'myd'、 和“动态”。 us_english 语言默认为“mdy”。

在这种情况下,您需要尝试set dateformat 'ymd'

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多