我有一个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值需要做两件事,而不仅仅是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查询。这是一个巨大的禁忌。
请尝试以下格式:
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")
伙计,你不需要将字符串转换为DateTime。
使用新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.
抱歉这是在vb.net中,但这是我用来转换CE日期/时间格式的方法:
Public Shared Function ConvertSqlDateTimeFormat(ByVal s As String) As String
Dim theDate As New Text.StringBuilder
Dim sTemp As String = ""
Dim iIndex As Integer
If s.Length > 8 Then
'first we do the time
iIndex = s.IndexOf(" ", System.StringComparison.OrdinalIgnoreCase)
If iIndex > 0 Then
sTemp = s.Substring(iIndex).Trim
iIndex = sTemp.IndexOf(".", System.StringComparison.OrdinalIgnoreCase)
If iIndex > 0 Then
sTemp = sTemp.Substring(0, iIndex)
End If
End If
'next the date
theDate.Append(s.Substring(4, 2))
theDate.Append("/")
theDate.Append(s.Substring(6, 2))
theDate.Append("/")
theDate.Append(s.Substring(0, 4))
theDate.Append(" ")
theDate.Append(sTemp)
End If
Return theDate.ToString
End Function