C# SQL Server CE中的日期时间格式是否正确?
我有一个C#C# SQL Server CE中的日期时间格式是否正确?,c#,sql,datetime,sql-server-ce,C#,Sql,Datetime,Sql Server Ce,我有一个C#DateTime类,想知道如何在SQL Server CE查询中将其格式化以将其插入数据库,我希望同时插入日期和时间。目前,当我尝试使用它时,会出现无效的格式异常 我目前使用的格式是:dd/MM/yyyy,我希望做一些类似于dd/MM/yyyy hh:MM:ss 我尝试插入的方式如下所示: ( ( DateTime )_Value ).ToString( "dd/MM/yyyy hh:mm:ss" ) 显然,hh:mm:ss不起作用,如果不起作用,dd/mm/yyyy在查询中成功
DateTime
类,想知道如何在SQL Server CE查询中将其格式化以将其插入数据库,我希望同时插入日期和时间。目前,当我尝试使用它时,会出现无效的格式异常
我目前使用的格式是:dd/MM/yyyy
,我希望做一些类似于dd/MM/yyyy hh:MM:ss
我尝试插入的方式如下所示:
( ( DateTime )_Value ).ToString( "dd/MM/yyyy hh:mm:ss" )
显然,hh:mm:ss
不起作用,如果不起作用,dd/mm/yyyy
在查询中成功执行
我尝试了几种格式,包括我在谷歌上找到的格式,但迄今为止没有一种有效…很抱歉,这是在vb.net中,但这是我用来从CE日期/时间格式转换的方法:
公共共享函数ConvertSqlDateTimeFormat(ByVal s作为字符串)作为字符串
将日期暗显为新文本。StringBuilder
Dim sTemp As String=“”
作为整数的Dim iIndex
如果s.长度>8,则
“首先我们做时间
iIndex=s.IndexOf(“,System.StringComparison.OrdinalIgnoreCase)
如果iIndex>0,则
sTemp=s.子串(iIndex).微调
iIndex=sTemp.IndexOf(“.”,System.StringComparison.OrdinalIgnoreCase)
如果iIndex>0,则
sTemp=sTemp.子字符串(0,iIndex)
如果结束
如果结束
“下一个日期
附加(s.子字符串(4,2))
日期。附加(“/”)
附加日期(s.子字符串(6,2))
日期。附加(“/”)
附加(s.Substring(0,4))
日期。附加(“”)
附加日期(sTemp)
如果结束
返回Date.ToString
端函数
尝试以下格式:
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")
如果您担心格式是否正确,那么已经有严重问题了。要在任何数据库(不仅仅是sqlce)中正确使用日期时间值,需要做两件事:
void SetDate(int recordID, DateTime timeStamp)
{
string SQL = "UPDATE [sometable] SET someDateTimeColumn= @NewTime WHERE ID= @ID";
using (var cn = new SqlCeConnection("connection string here"))
using (var cmd = new SqlCeCommand(SQL, cn))
{
cmd.Parameters.Add("@NewTime", SqlDbType.DateTime).Value = timeStamp;
cmd.Parameters.Add("@ID", SqlDbType.Integer).Value = recordID;
cn.Open();
cmd.ExecuteNonQuery();
}
}
永远不要使用字符串操作将值替换为sql查询。这是一个巨大的no-no.人,您不需要将字符串转换为日期时间 使用新DateTime的实例并将日期作为参数传递。像这样:
using (var ctx = new DBPreparoEntities())
{
var _client = from p in ctx.Client
select new Client
{
data = new DateTime(2016,08,17),
dateconf = null,
scod_cli = p.Rua,
valorini = 7214.62m,
};
return client.ToList();
}
不要使用:
... data = DateTime.Parse("2016/12/10") // or other type convertions.
//上面的代码对我有用
您是否可以包含代码,以便我们查看您的尝试?您是否能够将其他值插入到数据库中?获取任何异常/错误?插入的字段类型是什么?SQL Server中的Date和DateTime之间存在差异。您好@Jake1164,是的,我可以在数据库中添加其他值,而不会出现任何问题,只是在我尝试添加出错的时间时…尝试使用年-月-日之间的“-”。时间格式与yyyy-MM-dd相同hh:MM:ss认为您已经有了这样一个等待调用的方法是错误的。sql数据值的字符串操作在安全代码中没有位置。好的,那么安全漏洞在哪里呢?诚然,我误解了这个问题,并将重点放在将数据从数据库转换为日期时间格式上,而不是反过来,但如果数据已经在数据库中,我不确定问题出在哪里?如果datetime.tryparse没有给出正确的结果,您还有什么其他选项?+1用于指出永远不要使用字符串操作来存储日期。+1用于在SQL查询中永远不要使用字符串操作的课程。您可以这样做吗:“UPDATE\@SomeTable SET\@SomeColumn…etc”堆栈溢出不允许我发布at符号,因此\a口头解释通常对其他人有用//只需通过转换为格式化字符串来传递\u日期时间\u组件
private void button1_Click(object sender, EventArgs e)
{
var cnn1 ="";//connection string
SqlCeConnection cnn = new SqlCeConnection(cnn1);
datetime dt4 = DateTime.Today.Date.ToString("yyyyMMdd").trim();//format
string qry ="insert into tbl_test(User_Id, DateOfJoin)values (11,'" + dt4 + "')";
cmd = new SqlCeCommand(qry, cnn);
try
{
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{
string sr = ex.Message;
throw;
}
}