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转换中的存储过程
将用户定义表中的日期值传递给 SQL Server 2008 存储过程