Какой формат даты использует T-SQL? Опирается ли он на системную дату? Как я могу быть уверенным, что мои параметры передаются правильно, независимо от формата системной даты. Этот вопрос возникает из-за ошибки:Какой формат даты SQL
Error converting data type nvarchar to datetime.
SQL-скрипт в части:
CREATE PROCEDURE [dbo].[sz_pipeline04_pipelUpdte_inventory]
-- Add the parameters for the stored procedure here
@myFixDte datetime,
@doInsert bit
AS
BEGIN
Вызывающий C# код:
public static DataTable GridInventory(string strdProcedureName, DateTime fixDate, bool execInsertYN)
{
DataTable dtbl_inventory = null;
try
{
dtbl_inventory = new DataTable();
using (var conn = new SqlConnection(cls_connRegistry.GetConnStrFull()))
using (var command = new SqlCommand(strdProcedureName, conn)
{
CommandType = CommandType.StoredProcedure
})
{
command.Parameters.Add("@myFixDte", SqlDbType.DateTime).Value = DateTime.Parse(fixDate.ToShortDateString());
command.Parameters.Add("@doInsert", SqlDbType.Bit).Value = execInsertYN;
conn.Open();
SqlDataReader dr = command.ExecuteReader();
dtbl_inventory.Load(dr);
conn.Close();
}
}
catch (Exception datawalile)
{ dtbl_inventory = null; }
return dtbl_inventory;
}
отредактированный вопрос.
[Здесь] (https://msdn.microsoft.com/ru-ru/library/ms187928.aspx) ссылка о преобразовании varchar в тип данных –
@ N.Molderf спасибо. Однако здесь речь идет не о форматах дат в SQL, а о том, как я знаю/получаю текущую дату FORMAT, используемую в SQL, или альтернативную функцию ONE, которая будет работать КАЖДОЕ ВРЕМЯ с любым форматом даты SQL. Поэтому я отправляю аргументы в моем приложении C#, а формат даты изменения даты GUI изменяется в соответствии с системным форматом даты - отлично: я бы подумал, что SQL следует той же логике, но, по-видимому, нет - как передать эти аргументы независимо. – Chagbert
В идеале, если вы обращаетесь к SQL с другого языка, используйте * parameters * для передачи данных в качестве значения DateTime, позвольте языковой привязке/библиотеке доступа к данным иметь дело с переводом на SQL-тип 'datetime' и избегать передачи это как * строка * вообще. Проблемы с форматированием возникают только тогда, когда вы передаете значение в виде строки *, а не соответствующего типа. –