更改日期格式

时间:2011-01-07 19:14:42

标签: c# sql oracle datetime

我有一个DateTime变量(比方说,timestamp),它以通常的格式保存日期,如下所示:

11/1/2011

此变量用于构建SQL命令。 Oracle数据库仅接受格式为

的日期
YYYY-MM-DD

如何操作变量以此格式存储日期?

4 个答案:

答案 0 :(得分:8)

请勿格式化日期以将其包含在SQL中。

使用parameterized query,然后只需将值作为参数包含在内。这样你根本不需要任何格式化。

您应该对所有数据使用参数化查询 - 除格式化外,它还可以保护您免受SQL注入攻击。

获取适用于您正在使用的特定Oracle安装的日期/时间格式是正确的修复。做得恰当:避免在代码中包含数据(SQL)。


另一方面,你的问题是从一开始就做出错误的假设。 DateTime变量根本不以“通常格式”保存值,只有int包含十进制表示或数字的十六进制表示。 DateTime根本不在内部存储文本 - 它存储了许多刻度。致电ToString时如何格式化取决于各种文化方面。值得将类型表示的基本值的概念与您可能碰巧通过调用ToString获得的格式化的字符串表示分开。

答案 1 :(得分:4)

我假设您在SQL命令中将日期作为字符串发送。

DateTime date = ...your object...;
string formattedDate = date.ToString("yyyy-MM-dd");

如果是字符串格式,则需要先解析它。如果是日/月/年或月/日/年,很难从字符串中看到。

但你可以这样做:

string sDateTime = "11/1/2011";
DateTimeFormatInfo format = new DateTimeFormatInfo();
format.ShortDatePattern = "dd/MM/yyyy"; // or MM/dd/yyyy
DateTime date = DateTime.Parse(sDateTime, format);
string formattedDate = date.ToString("yyyy-MM-dd");

答案 2 :(得分:1)

var dt = DateTime.Now;
var formatted = dt.ToString("yyyy-MM-dd");

答案 3 :(得分:1)

试试这个:

string oracleTimeFomatDate = DateTime.Now.ToString("yyyy-MM-dd")