1

私はこのprocを書いています

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

列 vencimento(smalldatetime) の形式は mm/dd/yyyy で、proc はこの形式で動作します

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

しかし、@inicio の日付は dd/mm/yyyy になります。proc が機能する vencedata '28/03/2013' が必要です。

私はconvertを試しましたが、正しく書きません

4

4 に答える 4

3

CONVERTスタイル パラメータで使用

VARCHAR から SMALLDATETIME を取得するには

-- 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)

どちらの場合も出力は

2013-03-28 00:00:00

SMALLDATETIME から 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)

出力

28/03/2013
03/28/2013
于 2013-02-25T21:13:36.947 に答える
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 デモ

于 2013-02-25T20:53:25.910 に答える
1

これを試して:

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
于 2013-02-26T19:21:04.450 に答える
0

C#は、問題が発生した日付を日時と比較すると、日時が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);

秘訣は短い日付文字列に変換することです。

于 2013-02-27T19:14:47.427 に答える