SQL 存储过程转换日期参数

Posted

技术标签:

【中文标题】SQL 存储过程转换日期参数【英文标题】:SQL Stored Procedure Convert Date Parameter 【发布时间】:2010-10-07 01:24:59 【问题描述】:

我有一个接受两个日期的 SQL 存储过程,但是当我在打开的查询中发送它们时,Oracle 出于某种原因不喜欢日期格式。

在使用它发送之前,如何在存储过程中将日期格式从dd-mm-yyyy 更改为YYYY-MM-DD

例如SET @startdate = CONVERT

【问题讨论】:

【参考方案1】:

使用TO_DATE function 将字符串值转换为Oracle DATE 数据类型。

要接受格式为 YYYY-MM-DD 的日期字符串:

v_start_date DATE := TO_DATE(v_date_string, 'YYYY-MM-DD');

接受 DD-MM-YYYY 格式的日期字符串:

v_start_date DATE := TO_DATE(v_date_string, 'DD-MM-YYYY');

【讨论】:

【参考方案2】:

您可以使用Oracle的TO_CHAR函数。

/*retrieve from query*/
select TO_CHAR(reg_date,'YYYY-MM-DD') REGDATE from Users_TBL 

/*Assign to variable*/
regDate := TO_CHAR(reg_date,'YYYY-MM-DD');

【讨论】:

如果 Oracle 不接受该格式,这不是现有 DATE 值的问题。 TO_DATE 函数不适用于“YYYY-MM-DD”格式。这就是为什么尝试使用“TO_CHAR”而不是“TO_DATE”。 "YYYY-MM-DD" 适用于 TO_DATE 和 TO_CHAR。这仅取决于您在日期和字符串之间转换的方向。

以上是关于SQL 存储过程转换日期参数的主要内容,如果未能解决你的问题,请参考以下文章

插入前Microsoft SQL Server转换中的存储过程

VBA 将日期参数传递给 SQL Server 存储过程

在 SQL Server 存储过程中验证日期参数

将用户定义表中的日期值传递给 SQL Server 2008 存储过程

如何在 Pandas 中使用 sqlalchemy 执行具有多个日期参数的 sql 存储过程

将 Access 表日期值作为参数传递给 SQL Server 存储过程