如何将英文日期转换为尼泊尔日期

时间:2017-11-23 09:41:24

标签: sql-server

我如何将英语日期2017/11/11转换为其尼泊尔日期(根据尼泊尔日历的日期)。我搜索了很多文章,但未找到任何基于此的文章。请帮助

2 个答案:

答案 0 :(得分:2)

English Date: Anno Domini (AD)  and Nepali Date: Bikram Sambat (BS) Date Converter. Converting AD to BS is not a rocket science, all it depends on data mapping. Here, I have created Table DateLog which holds English Date as well as Nepali Date. Conversion Logic reside in this scalar function [dbo].[ufn_GetBikramSambatDate].

/****** Object:  Table [dbo].[DateLog]    Script Date: 5/4/2018 4:47:27 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DateLog](
    [SNo] [int] IDENTITY(1,1) NOT NULL,
    [BS_Year] [int] NULL,
    [BS_Month] [tinyint] NULL,
    [EnglishDate] [date] NULL,
PRIMARY KEY CLUSTERED 
(
    [SNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[DateLog] ON 

INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (1, 2073, 4, CAST(N'2016-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (2, 2073, 5, CAST(N'2016-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (3, 2073, 6, CAST(N'2016-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (4, 2073, 7, CAST(N'2016-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (5, 2073, 8, CAST(N'2016-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (6, 2073, 9, CAST(N'2016-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (7, 2073, 10, CAST(N'2017-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (8, 2073, 11, CAST(N'2017-02-12' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (9, 2073, 12, CAST(N'2017-03-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (10, 2074, 1, CAST(N'2017-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (11, 2074, 2, CAST(N'2017-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (12, 2074, 3, CAST(N'2017-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (13, 2074, 4, CAST(N'2017-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (14, 2074, 5, CAST(N'2017-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (15, 2074, 6, CAST(N'2017-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (16, 2074, 7, CAST(N'2017-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (17, 2074, 8, CAST(N'2017-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (18, 2074, 9, CAST(N'2017-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (19, 2074, 10, CAST(N'2018-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (20, 2074, 11, CAST(N'2018-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (21, 2074, 12, CAST(N'2018-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (22, 2075, 1, CAST(N'2018-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (23, 2075, 2, CAST(N'2018-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (24, 2075, 3, CAST(N'2018-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (25, 2075, 4, CAST(N'2018-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (26, 2075, 5, CAST(N'2018-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (27, 2075, 6, CAST(N'2018-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (28, 2075, 7, CAST(N'2018-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (29, 2075, 8, CAST(N'2018-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (30, 2075, 9, CAST(N'2018-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (31, 2075, 10, CAST(N'2019-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (32, 2075, 11, CAST(N'2019-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (33, 2075, 12, CAST(N'2019-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (34, 2076, 1, CAST(N'2019-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (35, 2076, 2, CAST(N'2019-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (36, 2076, 3, CAST(N'2019-06-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (37, 2076, 4, CAST(N'2019-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (38, 2076, 5, CAST(N'2019-08-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (39, 2076, 6, CAST(N'2019-09-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (40, 2076, 7, CAST(N'2019-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (41, 2076, 8, CAST(N'2019-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (42, 2076, 9, CAST(N'2019-12-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (43, 2076, 10, CAST(N'2020-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (44, 2076, 11, CAST(N'2020-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (45, 2076, 12, CAST(N'2020-03-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (46, 2077, 1, CAST(N'2020-04-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (47, 2077, 2, CAST(N'2020-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (48, 2077, 3, CAST(N'2020-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (49, 2077, 4, CAST(N'2020-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (50, 2077, 5, CAST(N'2020-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (51, 2077, 6, CAST(N'2020-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (52, 2077, 7, CAST(N'2020-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (53, 2077, 8, CAST(N'2020-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (54, 2077, 9, CAST(N'2020-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (55, 2077, 10, CAST(N'2021-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (56, 2077, 11, CAST(N'2021-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (57, 2077, 12, CAST(N'2021-03-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (58, 2078, 1, CAST(N'2021-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (59, 2078, 2, CAST(N'2021-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (60, 2078, 3, CAST(N'2021-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (61, 2078, 4, CAST(N'2021-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (62, 2078, 5, CAST(N'2021-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (63, 2078, 6, CAST(N'2021-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (64, 2078, 7, CAST(N'2021-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (65, 2078, 8, CAST(N'2021-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (66, 2078, 9, CAST(N'2021-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (67, 2078, 10, CAST(N'2022-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (68, 2078, 11, CAST(N'2022-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (69, 2078, 12, CAST(N'2022-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (70, 2079, 1, CAST(N'2022-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (71, 2079, 2, CAST(N'2022-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (72, 2079, 3, CAST(N'2022-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (73, 2079, 4, CAST(N'2022-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (74, 2079, 5, CAST(N'2022-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (75, 2079, 6, CAST(N'2022-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (76, 2079, 7, CAST(N'2022-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (77, 2079, 8, CAST(N'2022-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (78, 2079, 9, CAST(N'2022-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (79, 2079, 10, CAST(N'2023-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (80, 2079, 11, CAST(N'2023-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (81, 2079, 12, CAST(N'2023-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (82, 2080, 1, CAST(N'2023-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (83, 2080, 2, CAST(N'2023-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (84, 2080, 3, CAST(N'2023-06-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (85, 2080, 4, CAST(N'2023-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (86, 2080, 5, CAST(N'2023-08-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (87, 2080, 6, CAST(N'2023-09-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (88, 2080, 7, CAST(N'2023-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (89, 2080, 8, CAST(N'2023-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (90, 2080, 9, CAST(N'2023-12-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (91, 2080, 10, CAST(N'2024-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (92, 2080, 11, CAST(N'2024-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (93, 2080, 12, CAST(N'2024-03-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (94, 2081, 1, CAST(N'2024-04-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (95, 2081, 2, CAST(N'2024-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (96, 2081, 3, CAST(N'2024-06-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (97, 2081, 4, CAST(N'2024-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (98, 2081, 5, CAST(N'2024-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (99, 2081, 6, CAST(N'2024-09-17' AS Date))
GO
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (100, 2081, 7, CAST(N'2024-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (101, 2081, 8, CAST(N'2024-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (102, 2081, 9, CAST(N'2024-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (103, 2081, 10, CAST(N'2025-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (104, 2081, 11, CAST(N'2025-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (105, 2081, 12, CAST(N'2025-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (106, 2082, 1, CAST(N'2025-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (107, 2082, 2, CAST(N'2025-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (108, 2082, 3, CAST(N'2025-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (109, 2082, 4, CAST(N'2025-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (110, 2082, 5, CAST(N'2025-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (111, 2082, 6, CAST(N'2025-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (112, 2082, 7, CAST(N'2025-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (113, 2082, 8, CAST(N'2025-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (114, 2082, 9, CAST(N'2025-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (115, 2082, 10, CAST(N'2026-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (116, 2082, 11, CAST(N'2026-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (117, 2082, 12, CAST(N'2026-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (118, 2083, 1, CAST(N'2026-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (119, 2083, 2, CAST(N'2026-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (120, 2083, 3, CAST(N'2026-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (121, 2083, 4, CAST(N'2026-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (122, 2083, 5, CAST(N'2026-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (123, 2083, 6, CAST(N'2026-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (124, 2083, 7, CAST(N'2026-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (125, 2083, 8, CAST(N'2026-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (126, 2083, 9, CAST(N'2026-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (127, 2083, 10, CAST(N'2027-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (128, 2083, 11, CAST(N'2027-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (129, 2083, 12, CAST(N'2027-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (130, 2084, 1, CAST(N'2027-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (131, 2084, 2, CAST(N'2027-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (132, 2084, 3, CAST(N'2027-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (133, 2084, 4, CAST(N'2027-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (134, 2084, 5, CAST(N'2027-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (135, 2084, 6, CAST(N'2027-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (136, 2084, 7, CAST(N'2027-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (137, 2084, 8, CAST(N'2027-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (138, 2084, 9, CAST(N'2027-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (139, 2084, 10, CAST(N'2028-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (140, 2084, 11, CAST(N'2028-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (141, 2084, 12, CAST(N'2028-03-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (142, 2085, 1, CAST(N'2028-04-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (143, 2085, 2, CAST(N'2028-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (144, 2085, 3, CAST(N'2028-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (145, 2085, 4, CAST(N'2028-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (146, 2085, 5, CAST(N'2028-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (147, 2085, 6, CAST(N'2028-09-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (148, 2085, 7, CAST(N'2028-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (149, 2085, 8, CAST(N'2028-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (150, 2085, 9, CAST(N'2028-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (151, 2085, 10, CAST(N'2029-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (152, 2085, 11, CAST(N'2029-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (153, 2085, 12, CAST(N'2029-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (154, 2086, 1, CAST(N'2029-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (155, 2086, 2, CAST(N'2029-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (156, 2086, 3, CAST(N'2029-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (157, 2086, 4, CAST(N'2029-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (158, 2086, 5, CAST(N'2029-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (159, 2086, 6, CAST(N'2029-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (160, 2086, 7, CAST(N'2029-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (161, 2086, 8, CAST(N'2029-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (162, 2086, 9, CAST(N'2029-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (163, 2086, 10, CAST(N'2030-01-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (164, 2086, 11, CAST(N'2030-02-13' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (165, 2086, 12, CAST(N'2030-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (166, 2087, 1, CAST(N'2030-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (167, 2087, 2, CAST(N'2030-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (168, 2087, 3, CAST(N'2030-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (169, 2087, 4, CAST(N'2030-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (170, 2087, 5, CAST(N'2030-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (171, 2087, 6, CAST(N'2030-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (172, 2087, 7, CAST(N'2030-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (173, 2087, 8, CAST(N'2030-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (174, 2087, 9, CAST(N'2030-12-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (175, 2087, 10, CAST(N'2031-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (176, 2087, 11, CAST(N'2031-02-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (177, 2087, 12, CAST(N'2031-03-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (178, 2088, 1, CAST(N'2031-04-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (179, 2088, 2, CAST(N'2031-05-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (180, 2088, 3, CAST(N'2031-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (181, 2088, 4, CAST(N'2031-07-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (182, 2088, 5, CAST(N'2031-08-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (183, 2088, 6, CAST(N'2031-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (184, 2088, 7, CAST(N'2031-10-18' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (185, 2088, 8, CAST(N'2031-11-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (186, 2088, 9, CAST(N'2031-12-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (187, 2088, 10, CAST(N'2032-01-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (188, 2088, 11, CAST(N'2032-02-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (189, 2088, 12, CAST(N'2032-03-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (190, 2089, 1, CAST(N'2032-04-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (191, 2089, 2, CAST(N'2032-05-14' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (192, 2089, 3, CAST(N'2032-06-15' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (193, 2089, 4, CAST(N'2032-07-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (194, 2089, 5, CAST(N'2032-08-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (195, 2089, 6, CAST(N'2032-09-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (196, 2089, 7, CAST(N'2032-10-17' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (197, 2089, 8, CAST(N'2032-11-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (198, 2089, 9, CAST(N'2032-12-16' AS Date))
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (199, 2089, 10, CAST(N'2033-01-14' AS Date))
GO
INSERT [dbo].[DateLog] ([SNo], [BS_Year], [BS_Month], [EnglishDate]) VALUES (200, 2089, 11, CAST(N'2033-02-13' AS Date))
SET IDENTITY_INSERT [dbo].[DateLog] OFF


/****** Object:  UserDefinedFunction [dbo].[ufn_GetBikramSambatDate]    Script Date: 5/4/2018 4:47:27 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Sameer Mahat>
-- Create date: <Create Date, 2018-05-04,>
-- Description: <Description, ,Scalar Function to convert English date to Nepali Date (Bikram Sambat)>
-- =============================================
CREATE FUNCTION [dbo].[ufn_GetBikramSambatDate] ( @EnglishDate DATE )
RETURNS VARCHAR(50)
AS
    BEGIN
        DECLARE @BS_Year INT ,
            @BS_Month VARCHAR(2) ,
            @NpDay VARCHAR(2) ,
            @EngDay DATE ,
            @DayDiff INT ,
            @DayName INT ,
            @Result VARCHAR(50);  

        SELECT  @EngDay = EnglishDate ,
                @BS_Year = BS_Year ,
                @BS_Month = BS_Month
        FROM    dbo.DateLog (NOLOCK)
        WHERE   DATEDIFF(DAY, EnglishDate, @EnglishDate) >= 0
        ORDER BY EnglishDate;   



        SELECT  @DayDiff = DATEDIFF(DAY, @EngDay, @EnglishDate);  
        SELECT  @NpDay = 1 + @DayDiff;  


        SET @NpDay = REPLICATE('0', 2 - LEN(@NpDay)) + @NpDay;
        SET @BS_Month = REPLICATE('0', 2 - LEN(@BS_Month)) + @BS_Month;

        SET @Result = CONVERT(VARCHAR(4), @BS_Year) + '-'
            + CONVERT(VARCHAR(2), @BS_Month) + '-'
            + CONVERT(VARCHAR(2), @NpDay);
        RETURN (@Result);  

    END;
GO

Execute below function:
SELECT  dbo.[ufn_GetBikramSambatDate]('2018-04-14')

答案 1 :(得分:1)

尼泊尔日历以Bikram Sambat为基础,分别为56岁和8岁 比A.D.提前几个月,Bikram Sambat日历开始了 在公元前57年国王Bikramaditya在印度。

这些日期之间的差异大致为57年,8个月和16天。要获得BS日期,您需要在AD日期中添加57年,8个月和16天。但主要问题是可能存在+/- 3天的差异

我假设56岁零8个月

SELECT GETDATE() AS 'English Date',
   DATEADD(MONTH,8,DATEADD(YEAR,56,GETDATE())) AS 'Nepali date'

有关DATEADD

的更多信息

访问http://sqlhints.com/2014/07/05/how-to-add-days-weeks-months-quarters-or-years-to-a-date-in-sql-server/