【SQL Server】使用 Function 函数获取当前日期(二)
【摘要】 设置服务器恒定时间,且获取当前服务器的时间。
[SQL Server]如果直接利用GETDATE()获取服务器当前时间,所获取的时间为server所在的本地的时间,这样如果数据中心在其他地域国家,或者不同server同步数据,直接利用GETDATE()便会出现问题。解决方案,在数据库创建一个存储当前business date的表:SysCurrentDate,之后在从该table中获取被设定好的当
设置服务器恒定时间,且获取当前服务器的时间。
[SQL Server]如果直接利用GETDATE()获取服务器当前时间,所获取的时间为server所在的本地的时间,这样如果数据中心在其他地域国家,或者不同server同步数据,直接利用GETDATE()便会出现问题。解决方案,在数据库创建一个存储当前business date的表:SysCurrentDate,之后在从该table中获取被设定好的当前Server date
(1): 存储business date的拟创表语句
CREATE TABLE [dbo].[SysCurrentDate](
[ID] [int] IDENTITY(1,1) NOT NULL,
[CurrentDate] [datetime] NOT NULL,
[CurrentTime] [datetime] NULL,
[CreatedBy] [nvarchar](30) NOT NULL,
[CreatedDate] [datetime] NOT NULL,
[UpdatedBy] [nvarchar](30) NULL,
[UpdatedDate] [datetime] NULL,
CONSTRAINT [PK_SysCurrentDate] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
(2): 利用stored procedure获取该当前业务日期(注:如果该表中有数据则返回该当前date,如果没有数据则直接返回DB Server所在的当地date)
拟create Function语句:
-- =============================================
-- Author: bluetata
-- Create date: 07/13/2023
-- Description: getCurrentDate
-- =============================================
CREATE FUNCTION [dbo].[udf_GetCurrentDate](
-- Add the parameters for the function here
)
RETURNS VARCHAR(500)
AS
BEGIN
DECLARE @CurrentDate DATETIME= NULL;
DECLARE @CurrentTime DATETIME= NULL;
DECLARE @ReturnDate DATETIME= NULL;
SELECT TOP 1 @CurrentDate = CurrentDate,
@CurrentTime = CurrentTime
FROM SysCurrentDate;
IF(@CurrentDate IS NOT NULL)
BEGIN
IF(@CurrentTime IS NULL)
BEGIN
SET @ReturnDate = CONVERT(VARCHAR(20), CONVERT(DATE, @CurrentDate))+' '+CONVERT(VARCHAR(10), GETDATE(), 108);
END;
ELSE
BEGIN
SET @ReturnDate = CONVERT(VARCHAR(20), CONVERT(DATE, @CurrentDate))+' '+CONVERT(VARCHAR(10), @CurrentTime, 108);
END;
END;
ELSE
BEGIN
SET @ReturnDate = GETDATE();
END;
RETURN @ReturnDate;
END;
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)