Je le code suivant:Datetime a trop de décimales
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
// set properties on builder (omitted for brevity)
using (SqlConnection connection = new SqlConnection(builder.ToString()))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = System.Data.CommandType.Text;
command.CommandText = "SELECT * FROM Employee WHERE WhenHire < @HireDate";
SqlParameter hireDateParameter = new SqlParameter("@HireDate", DateTime.Now);
command.Parameters.Add(hireDateParameter);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// do stuff
}
}
}
}
qui apparaît dans Profiler SQL comme:
exec sp_executesql N'SELECT * FROM Employee WHERE WhenHire < @HireDate',
N'@HireDate datetime',
@HireDate='2010-12-06 11:43:23.573'
Quelle est la précision du paramètre datetime déterminé? J'ai vu cela avoir 7 chiffres après la virgule.
exec sp_executesql N'SELECT * FROM Employee WHERE WhenHire < @HireDate',
N'@HireDate datetime',
@HireDate='2010-12-06 11:43:23.5733125'
Dans ce cas, la déclaration ne parvient pas à exécuter avec cette erreur:
Msg 8114, Level 16, State 1, Line 1 Error converting data type varchar to datetime.
Pouvez-vous poster la définition de table? Est-ce que 'WhenHire' est vraiment de type datetime? – VVS
Je préférerais ne pas afficher toute la définition de la table. Je peux dire avec certitude que WhenHire est un type datetime. Mon problème principal que je veux comprendre est pourquoi est-ce que 7 chiffres seraient générés après la décimale dans certaines situations? Je n'ai pas été en mesure de préciser exactement ce qui le cause et je cherchais des suggestions. – Bryan
Enregistrez-vous vraiment une date d'embauche à la milliseconde? Coupez-le et continuez. La précision est déterminée par le producteur du logiciel serveur que vous utilisez. Il diffère entre toutes les technologies de base de données. –