2013-02-25 2 views
1

내가이 PROC에게변환 일/월/YYY 2008

alter proc vencedata (@inicio smalldatetime)as 
    select idconta,vencimento,pagamento,historico,original,formpagto,planoconta,clifor 
    from financeiro where vencimento >= @inicio 

열 vencimento (smalldatetime으로)을 적게는/DD/YYYY proc 디렉토리가 작동 형식 mm에 내가 PROC 필요 형식

vencedata '03/28/2013' (mm/dd/yyyy) 

하지만, 일/월/년에서 제공 @inicio의 날짜는 vencedata 작동 '28/2013 '

내가 변환과 시도하지만 난 잘 쓰는 돈이/03 감사합니다. 어떤 방향으로도

+0

varchar 열입니까? – flup

+0

확인하십시오 http://stackoverflow.com/questions/7991872/how-to-convert-from-one-date-format-to-another-in-microsoft-sql-server 또는 [SQL SERVER CAST and CONVERT] (http://msdn.microsoft.com/en-us/library/ms187928.aspx) – araknoid

답변

1

날짜, 날짜/시간은 말한대로 형식이 없지만 서버가 dd/mm/yyyy 형식의 문자열을 smalldatetime으로 변환하지 못한다는 것입니다. 날짜가 dd/mm/yyyy 형식의 문자열로 전달하는 경우

는 가장 좋은 것은 ISO 형식 (yyyymmdd)에 도착 후 저장 프로 시저에 전달하기 전에 SMALLDATETIME로 변환하는 것입니다.

declare @inicio varchar(20) = '28/03/2013', 
     @inicio_date smalldatetime 

select @inicio_date = convert(smalldatetime, 
       right(@inicio,4) + right(left(@inicio,5),2) + left(@inicio,2)) 

아래와 같이 저장 프로 시저를 실행하십시오.

exec vencedata @inicio_date 

스타일의 매개 변수를 Fiddle demo of convertion

3

사용 CONVERT

두 경우 모두 출력에 VARCHAR

-- From Europe style varchar 
DECLARE @d1 VARCHAR(20) = '28/03/2013' 
SELECT CONVERT(smalldatetime, @d1, 103) 
-- From American style varchar 
DECLARE @d2 VARCHAR(20) = '03/28/2013' 
SELECT CONVERT(smalldatetime, @d2, 101) 

에서 SMALLDATETIME을 얻으려면

2013-03-28 00:00:00 
입니다

그리고 VARCHAR

DECLARE @d3 SMALLDATETIME = '2013-03-28' 
-- To Europe style 
SELECT CONVERT(VARCHAR(20), @d3, 103) 
-- To American style 
SELECT CONVERT(VARCHAR(20), @d3, 101) 

OUPUT

28/03/2013 
03/28/2013 
1

에 SMALLDATETIME에서 반대로이 시도 :

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  RAFAŁ :D 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
CREATE PROCEDURE Esample 
AS 
BEGIN 
    DECLARE @vencedata datetime 
    SET @vencedata = convert(datetime, '03/28/2013') 
    DECLARE @data datetime 
    SET @data = convert(datetime, (Convert(varchar(60),Month(@vencedata))+'/'+Convert(varchar(60),DAY(@vencedata))+'/'++Convert(varchar(60),YEAR(@vencedata)))) 
    SELECT @data 
END 
GO 
0

C#을 잘 변환하려면 problema이 날짜 수 fo 00:00:00에 있던 날짜를 부기 비교시 작은 편지

string inicio = dateTimePicker1.Value.ToShortDateString(); 
    string fim = dateTimePicker2.Value.ToShortDateString(); 
    DateTime Dinicio = Convert.ToDateTime(inicio); 
    DateTime Dfinal = convert.ToDateTime(fim); 
      Decimal Svt = minaf.TData(Dinicio, Dfinal); 
      DataTable llena3 = minaf.cargrid3(Dinicio,Dfinal); 

트릭이 간단한 날짜 문자열로 변환됩니다.