如何在plsql中将日期转换为字符串?

时间:2013-06-28 04:15:11

标签: vb.net oracle plsql

我将如何将日期转换为字符串?我的数据库是plsql,日期是从基本日期选择器插入的,我指定为bdp1。

select * from smsdw.lot_act where (tran_dttm <= to_date('4/20/2012', 'MM/DD/YYYY') and tran_dttm > to_date('4/19/2012' ,'MM/DD/YYYY'))

1 个答案:

答案 0 :(得分:1)

您的格式和字符串不一致。

你需要在4前面加0,如下所示:04/20/2012

或者您需要调整格式,如下所示:M/D/YYYY
第二眼看,to_date() documentation没有显示对单M的支持。您需要在月份中包含前导0,而当天的单D将是非常愚蠢的。


根据您的评论进行更新。但是,请允许我说,使用字符串连接将数据替换为像 evil 这样的查询,可能会导致您的应用被黑客攻击。

Dim queryString As String = "select * from smsdw.lot_act where (tran_dttm <= to_date( '" & bdp1.ToString("MM/dd/yyyy") & "','MM/DD/YYYY') and tran_dttm > to_date( '" & bdp1.ToString("MM/dd/yyyy") & "' ,'MM/DD/YYYY')"

作为奖励,这样做正确可以避免担心日期格式:

Dim queryString As String = "select * from smsdw.lot_act where tran_dttm <= :bdp1 and tran_dttm > :bdp1 "

command.Parameters.Add(":bdp1", SqlDbType.DateTime).Value = bdp1

但同样:不同的库可能会处理这种略有不同。有些需要:字符,有些不允许,有些则按顺序工作,而不是名称(意味着你需要两次添加参数)。