如果我以 dd-MM-yy 格式传递日期,则将日期以 yyyy-MM-dd 格式保存到 SQL Server 2008
本文关键字:日期 格式 保存 yyyy-MM-dd 2008 SQL Server dd-MM-yy 如果 | 更新日期: 2023-09-27 18:34:11
我正在尝试将日期保存到SQL Server 2008数据库中。我已经将日期转换为dd/MM/yyyy
格式,即使日期以yyyy-MM-dd
格式存储在数据库中。我的按钮点击代码:
protected void Submit_Click(object sender, EventArgs e)
{
DateTime fdate = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
sample = fdate;
}
public class sample
{
public string sample(DateTime fdate)
{
string qry = "insert into sample values('"+fdate+"')";
SqlDataReader dr = conn.query(qry);
}
}
数据库日期(列)数据类型为 date
。我可以知道原因吗??
我的其他课程
public class Connection
{
SqlConnection conn;
SqlCommand cmd;
public SqlDataAdapter ad;
public DataTable dt = new DataTable();
public void connclose()
{
conn.Close();
}
public Connection()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
cmd = null;
}
//------------------ connection string---------------------------------------------------------
---------------------//
public string nonquery(string qry)
{
string str;
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Open();
cmd=new SqlCommand(qry, conn);
str=cmd.ExecuteNonQuery().ToString();
conn.Close();
return str;
}
public SqlDataReader query(string qry)
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Open();
cmd = new SqlCommand(qry, conn);
SqlDataReader dr = cmd.ExecuteReader();
return dr;
}
首先,Sql Server 根本不以 yyyy-MM-dd 格式存储您的数据。它以人类不可读的二进制格式存储日期,并且仅将它们转换为您在查询工具中为方便起见的格式。如果你正在考虑格式,你已经做错了什么。你需要这样做:
public string sample(DateTime fdate)
{
string qry = "insert into sample values( @date )";
using (var cn = new SqlConnection("connection string here") )
using (var cmd = new SqlCommand(qry, cn))
{
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = fdate;
cn.Open();
using (var dr = cmd.ExecuteReader())
{
//use dr here...
}
}
}
当然,您有那个conn
对象,它看起来像是具有代码来帮助您避免某些样板。这很好,但您需要更新该对象,以便它query()
方法需要的不仅仅是 sql 字符串。它还必须具有某种机制来接受独立于 sql 命令的参数数据。否则,您不仅会遇到这样的日期转换问题;您还会发现自己试图弄清楚您的数据库是如何被黑客入侵的。