Oracle日期字段另存为VARCHAR2,显示奇怪字符

Oracle日期字段另存为VARCHAR2,显示奇怪字符,oracle,Oracle,Oracle VARCHAR2类型是否解释任何类型的转义序列?我使用的系统有一个UI,其中包含出生日期字段,但DB将其保存为VARCHAR2。我们在数据库端的这个字段中看到奇怪的文本;像“FF”、“B”、“EG”这样看起来难以解释的字母。日期字段可以采用日期值(如2011年8月8日)或数字行(如121234)。这些被转换成日期。用户界面不允许输入“FF”或“EG”等文本。所以我们有点困惑这些是如何进入数据库的 有人见过类似的问题吗?VARCHAR2列将存储您提供的任何数据(即通过SQL插入/更新

Oracle VARCHAR2类型是否解释任何类型的转义序列?我使用的系统有一个UI,其中包含出生日期字段,但DB将其保存为VARCHAR2。我们在数据库端的这个字段中看到奇怪的文本;像“FF”、“B”、“EG”这样看起来难以解释的字母。日期字段可以采用日期值(如2011年8月8日)或数字行(如121234)。这些被转换成日期。用户界面不允许输入“FF”或“EG”等文本。所以我们有点困惑这些是如何进入数据库的


有人见过类似的问题吗?

VARCHAR2列将存储您提供的任何数据(即通过SQL插入/更新)


在将输入数据存储到数据库之前,您是否对输入数据进行了任何服务器端输入验证(即非javascript检查)?如果没有,则可能有脚本或攻击者试图将恶意内容注入您的数据库或危害您的web应用程序。

VARCHAR2列将存储您提供的任何数据(即通过SQL插入/更新)


在将输入数据存储到数据库之前,您是否对输入数据进行了任何服务器端输入验证(即非javascript检查)?如果没有,则可能有脚本或攻击者试图将恶意内容注入您的数据库或危害您的web应用程序。

否,
VARCHAR2
类型不包括任何类型的转义序列

听起来您正在使用的应用程序有一些相当复杂的逻辑,允许它将日期存储为各种字符串。您看到的字母可能对应用程序有意义


这就是为什么#136日期应始终存储在
DATE
列中,而从不存储在
VARCHAR2
列中。否则,一些有进取心的开发人员将决定在数据中存储一些自定义格式掩码是有意义的,以解决一些显示问题,这些问题使得任何人都很难或不可能更新数据或报告此特定应用程序之外的数据。

否,
VARCHAR2
类型不包括任何类型的转义序列

听起来您正在使用的应用程序有一些相当复杂的逻辑,允许它将日期存储为各种字符串。您看到的字母可能对应用程序有意义


这就是为什么#136日期应始终存储在
DATE
列中,而从不存储在
VARCHAR2
列中。否则,,在此过程中,一些有进取心的开发人员将决定在数据中存储一些自定义格式掩码是有意义的,以解决一些显示问题,这些问题使得任何人都很难或不可能更新数据或报告此特定应用程序之外的数据。

日期时间值可以转换为varchar使用to_char函数时,输出日期格式取决于to_char函数中指定的格式。所以to_char函数的格式肯定有问题,

日期时间值可以使用to_char函数转换为varchar,输出日期格式取决于to_char函数中指定的格式。所以to_char函数的格式肯定有问题,

我的想法正是如此——这是一款现成的软件,我很惊讶地看到DB使用VARCHAR2来表示日期。我们还没有找到原因。好吧,我们找到了原因-程序需要使用部分日期,日期类型应该不允许这种截断我的想法完全正确-这是现成的软件,我惊讶地看到DB使用VARCHAR2作为日期。我们还没有找到原因。好的,我们找到了原因-程序需要使用部分日期,并且日期类型应该不允许这种截断