0

以下两个函数,我想将它们从Access转换为SQL Server,我该如何修改我的代码?太感谢了。我以前从未使用过 SQL Server,并且努力学习它。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 中,您无需进行所有数学运算即可将日期转换为整数并返回。

第一:

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 回答