3

次のような番号があります: 13901210 出力で次の結果が得られるようにしたい 1390/12/10

入力関数: bigint の数値 出力: 文字列

この関数を作成するにはどうすればよいですか?

4

5 に答える 5

4

なぜ誰もこの単純なクエリを提案しなかったのだろうか

declare @input bigint=13901210

select REPLACE(Convert(varchar,Convert(date,CONVERT(varchar,@input))),'-','/')

SQL フィドル

于 2013-05-21T12:12:17.050 に答える
0

これも私にとってはうまくいきます:

    CREATE PROCEDURE getdatestr
    @result nvarchar(12) output,
    @info bigint 
    AS
    BEGIN
    SET @result=(SELECT LEFT(CAST(@info AS VARCHAR(8)),4)+'/'+
    SUBSTRING(CAST(@info AS VARCHAR(8)),5,2)+'/'+
    RIGHT(CAST(@info AS VARCHAR(8)),2))
    RETURN @result
    END
    GO

LEFT、RIGHTがnvarcharを返し、SUBSTRINGが文字列を返すことを除いて:)とにかく試してみてください...同じ出力が得られ、問題がなければ簡単に取得できます。

于 2012-04-25T06:50:00.100 に答える
0

このクエリを試すことができます:

SELECT SUBSTRING(CAST(13901210 AS varchar(8)), 1,4) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 5,2) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 7,2)

値を、保存されている数値を持つフィールド/変数に置き換えるだけです

完全な関数は次のようになります。

CREATE FUNCTION [dbo].[int_to_slashed_string] ( @value int )
RETURNS varchar(10)
AS
BEGIN
DECLARE @string varchar(8);
SET @string = CAST(@value AS varchar(8));
RETURN SUBSTRING(@string, 1,4)
    + '/' + SUBSTRING(@string, 5,2)
    + '/' + SUBSTRING(@string, 7,2);
END

この関数は、値が 8 桁であると想定しています。その他の制限や条件がある場合は、機能を変更する必要があります。

于 2012-04-25T06:31:24.047 に答える
0

値を部分文字列にしたくない場合は、次のようにすることができます。

DECLARE @nbr INT=13901210
SELECT 
    LEFT(@nbr,4)+'/'+
    SUBSTRING(CAST(@nbr AS VARCHAR(10)),5,2)+'/'+
    RIGHT(@nbr,2)

そして、関数は次のようになります。

CREATE FUNCTION [dbo].[GetDateFormatForInt] (@nbr int)
RETURNS varchar(10)
AS
BEGIN
RETURN
    LEFT(@nbr,4)+'/'+
    SUBSTRING(CAST(@nbr AS VARCHAR(10)),5,2)+'/'+
    RIGHT(@nbr,2);
END

これは が 10 桁の数字の場合にのみ機能します

于 2012-04-25T06:42:35.320 に答える