웹 사이트를 개발하고 있습니다. 나는 사용자로부터 입력으로 날짜를 가져 가고 있으며 입력 한 날짜에 따라 DB의 결과를 필터링합니다. 내가 직면 한 문제는 코드 숨김 (예 : 1/1/2017 12:00:00 AM)의 날짜 형식이 SQL Server의 열 형식 (예 : 2016-10-08 17 : 58 : 12.000)과 다르다는 것입니다. 첫 번째 차이점은 sql 시간은 24 시간 형식입니다. 두 번째로 C# 년/월/일은 "/"을 사용하여 구분됩니다. "s"연도 - 월 - 일은 "-"로 구분되어 있으므로 올바르게 비교되지 않습니다. 나는 양쪽에 같은 날짜 형식을 원한다. 아무도 도와 줄 수 있어요. 감사합니다형식 코드 숨김 또는 SQL 서버에있는 날짜
편집 저장 프로 시저
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();
}
}
: 당신이 DateTime
유형을 사용하는 경우에는 SQL 서버로 전송하는 C#에서 형식으로 날짜를 포맷 할 필요가 없습니다
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 객체를 사용하여 비교하려고 했습니까? 에스? – McNets
양쪽 날짜의 날짜가 dateTime –
입니다. SQL Server의 DateTime은 물론 C#에서도 표시 형식을 저장하지 않습니다. 관련 코드를 포함하도록 질문을 수정하십시오. –