Я разрабатываю веб-сайт. я беру дату в качестве ввода от пользователя и в зависимости от введенной даты я фильтрую результаты из БД. Проблема, с которой я сталкиваюсь, заключается в том, что формат даты в коде позади (с 01.01.2007 12:00:00) отличается от формата столбца в sql-сервере (т. Е. 2016-10-08 17: 58: 12 000). первое различие в sql время в 24-часовом формате. 2-е место в C# год/месяц/дата разделяются с использованием «/», а в sql year-month-date разделяются «-», поэтому почему-то не правильно. Мне нужен одинаковый формат дат с обеих сторон. может кто-нибудь помочь. Благодаряформат Дата в коде позади или в sql-сервере
EDIT
protected void searchRecords(DateTime startDate, DateTime finishDate, DateTime startTime, DateTime finishTime, String receiver) {
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand("SP_GetRecords", connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter sDate = new SqlParameter("@sDate", SqlDbType.DateTime);
sDate.Value = startDate;
sDate.Direction = ParameterDirection.Input;
command.Parameters.Add(sDate);
SqlParameter fDate = new SqlParameter("@fDate", SqlDbType.DateTime);
fDate.Value = finishDate;
fDate.Direction = ParameterDirection.Input;
command.Parameters.Add(fDate);
SqlParameter sTime = new SqlParameter("@sTime", SqlDbType.DateTime);
sTime.Value = startTime;
sTime.Direction = ParameterDirection.Input;
command.Parameters.Add(sTime);
SqlParameter fTime = new SqlParameter("@fTime", SqlDbType.DateTime);
fTime.Value = finishTime;
fTime.Direction = ParameterDirection.Input;
command.Parameters.Add(fTime);
SqlParameter rcvr = new SqlParameter("@rcvr", SqlDbType.NVarChar, 50);
rcvr.Value = receiver;
rcvr.Direction = ParameterDirection.Input;
command.Parameters.Add(rcvr);
SqlDataReader reader;
try
{
connection.Open();
// String resultMessage = command.Parameters["@sDate"].Value.ToString();
reader = command.ExecuteReader();
while (reader.Read())
{
lblreport.Text = reader["username"].ToString();
}
}
catch (SqlException e)
{
lblreport.Text = e.Message;
}
finally
{
connection.Close();
}
}
хранимых процедур:
ALTER PROCEDURE [dbo].[SP_GetRecords]
-- Add the parameters for the stored procedure here
@sDate dateTime,
@fDate dateTime,
@sTime dateTime,
@fTime dateTime,
@rcvr nvarchar(50)
AS
BEGIN
declare @sql nvarchar(max);
declare @startDate datetime;
set @startDate = CONVERT(datetime,@sDate);
set @sql ='select * from outbox where 1=1 ';
if(@sDate is not null)
set @sql = @sql + 'and acceptedfordeliverytime >= @sDate ';
if(@rcvr is not null)
set @sql = @sql + ' and [email protected]';
Declare @params nvarchar(500)
SELECT @params ='@sDate DateTime,'+
'@fDate DateTime,'+
'@sTime DateTime,'+
'@fTime DateTime,'+
'@rcvr nvarchar(50)'
exec sp_executesql @sql, @params,@sDate,@fDate,@sTime,@fTime,@rcvr
Вам не нужен такой же формат, если вы не используете строковые переменные, пытались ли вы сравнить с использованием объекта DateTime s? – McNets
да даты на обеих сторонах имеют тип dateTime –
DateTime в sql-сервере, а также в C# не сохраняет формат отображения. Измените свой вопрос, чтобы включить соответствующий код. –