0

次の 2 つの関数を Access から SQL サーバーに変換したいのですが、コードを変更するにはどうすればよいですか? どうもありがとう。これまで SQL サーバーを使用したことがなく、一生懸命習得しようとしています。LISはドライブです

Public Function PathDate(Ndate As Date) As Long
    PathDate = (Year(Ndate) * 10000) + (Month(Ndate) * 100) + Day(Ndate)
End Function

Public Function NormalDate(LISDate As Long) As Date

    If (LISDate = -1) Then
        NormalDate = "-1"
    Else
        NormalDate = MonthName(LISDate \ 100 Mod 100) & " " & LISDate Mod 100 & " ," & LISDate \ 10000
    End If
End Function
4

1 に答える 1

2

SQL Server では、日付を int に変換したり、その逆に変換したりするために、すべての計算を行う必要はありません。

最初の1つ:

CREATE FUNCTION dbo.PathDate
(
    @NDate DATETIME
)
RETURNS INT
AS
BEGIN
    RETURN (SELECT CONVERT(CHAR(8), @NDate, 112));
END
GO

二つ目:

CREATE FUNCTION dbo.NormalDate
(
    @LISDate INT
)
RETURNS VARCHAR(32)
AS
BEGIN
    RETURN (SELECT DATENAME(MONTH, d) 
      + ' ' + RTRIM(DAY(d)) 
      + ', ' + RTRIM(YEAR(d)) 
    FROM 
    (
      SELECT d = CONVERT(DATETIME, CONVERT(CHAR(8), @LISDate))
    ) AS d);
END
GO

使用例:

DECLARE @NDate DATETIME, @LISDate INT;

SELECT @NDate = GETDATE(), @LISDate = 20120523;

SELECT dbo.PathDate(@NDate), dbo.NormalDate(@LISDate);

結果:

20120523        May 23, 2012
于 2012-05-23T14:28:37.930 に答える