Calculate Age And Experience Using Table Data And Stored Procedure In MVC

Introduction

 
In this article, we will learn how to calculate age based on today's date and years of experience based on the date of joining and the date of leaving between dates by passing date parameters in a stored procedure using ASP.NET MVC and ADO.NET. Here, the user can see age and years of experience with other details records about the employee by filtering between dates.
 
Prerequisites
  • Visual Studio
  • SQL server
Note
Before going through this session, visit my previous articles related to ASP.NET MVC and SQL Server for a better understanding of how to set up the project.
Step 1
 
First, we need to create a table schema and prepare data for these tables. Refer to the below script:
  1. SET ANSI_NULLS ON  
  2. GO  
  3. SET QUOTED_IDENTIFIER ON  
  4. GO  
  5. CREATE TABLE [dbo].[Country](  
  6.     [CountryID] [int] IDENTITY(1,1) NOT NULL,  
  7.     [CountryName] [varchar](100) NOT NULL,  
  8. PRIMARY KEY CLUSTERED   
  9. (  
  10.     [CountryID] ASC  
  11. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
  12. ) ON [PRIMARY]  
  13. GO  
  14. /****** Object:  Table [dbo].[State]    Script Date: 31-05-2020 15:11:16 ******/  
  15. SET ANSI_NULLS ON  
  16. GO  
  17. SET QUOTED_IDENTIFIER ON  
  18. GO  
  19. CREATE TABLE [dbo].[State](  
  20.     [StateID] [int] IDENTITY(1,1) NOT NULL,  
  21.     [CountryID] [int] NOT NULL,  
  22.     [StateName] [varchar](100) NOT NULL,  
  23. PRIMARY KEY CLUSTERED   
  24. (  
  25.     [StateID] ASC  
  26. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
  27. ) ON [PRIMARY]  
  28. GO  
  29. /****** Object:  Table [dbo].[Tbl_Applicant]    Script Date: 31-05-2020 15:11:16 ******/  
  30. SET ANSI_NULLS ON  
  31. GO  
  32. SET QUOTED_IDENTIFIER ON  
  33. GO  
  34. CREATE TABLE [dbo].[Tbl_Applicant](  
  35.     [int_ApplicantID] [int] NOT NULL,  
  36.     [vch_ApplicantName] [varchar](104) NOT NULL,  
  37.     [vch_FatherName] [varchar](104) NOT NULL,  
  38.     [vch_MotherName] [varchar](104) NOT NULL,  
  39.     [dtm_DOB] [datetime] NOT NULL,  
  40.     [vch_CorMobileNo] [char](10) NOT NULL,  
  41.     [vch_EMailID] [varchar](104) NULL,  
  42.  CONSTRAINT [PK_Tbl_Applicant] PRIMARY KEY CLUSTERED   
  43. (  
  44.     [int_ApplicantID] ASC  
  45. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
  46. ) ON [PRIMARY]  
  47. GO  
  48. /****** Object:  Table [dbo].[Tbl_Company]    Script Date: 31-05-2020 15:11:17 ******/  
  49. SET ANSI_NULLS ON  
  50. GO  
  51. SET QUOTED_IDENTIFIER ON  
  52. GO  
  53. CREATE TABLE [dbo].[Tbl_Company](  
  54.     [int_CompID] [int] NOT NULL,  
  55.     [vch_CompName] [varchar](104) NOT NULL,  
  56.     [dtm_Join] [datetime] NOT NULL,  
  57.     [dtm_Leave] [datetime] NOT NULL,  
  58.  CONSTRAINT [PK_Tbl_Company] PRIMARY KEY CLUSTERED   
  59. (  
  60.     [int_CompID] ASC  
  61. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
  62. ) ON [PRIMARY]  
  63. GO  
  64. SET IDENTITY_INSERT [dbo].[Country] ON   
  65. GO  
  66. INSERT [dbo].[Country] ([CountryID], [CountryName]) VALUES (1, N'Brazil')  
  67. GO  
  68. INSERT [dbo].[Country] ([CountryID], [CountryName]) VALUES (2, N'China')  
  69. GO  
  70. INSERT [dbo].[Country] ([CountryID], [CountryName]) VALUES (3, N'France')  
  71. GO  
  72. INSERT [dbo].[Country] ([CountryID], [CountryName]) VALUES (4, N'India')  
  73. GO  
  74. INSERT [dbo].[Country] ([CountryID], [CountryName]) VALUES (5, N'USA')  
  75. GO  
  76. SET IDENTITY_INSERT [dbo].[Country] OFF  
  77. GO  
  78. SET IDENTITY_INSERT [dbo].[State] ON   
  79. GO  
  80. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (1, 5, N'California')  
  81. GO  
  82. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (2, 2, N'Beijing')  
  83. GO  
  84. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (3, 5, N'Iowa')  
  85. GO  
  86. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (4, 5, N'New York')  
  87. GO  
  88. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (5, 2, N'Hebei')  
  89. GO  
  90. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (6, 2, N'Jiangsu')  
  91. GO  
  92. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (7, 5, N'New Jersey')  
  93. GO  
  94. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (8, 5, N'Massachusetts')  
  95. GO  
  96. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (9, 5, N'Connecticut')  
  97. GO  
  98. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (10, 2, N'Guangdong')  
  99. GO  
  100. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (11, 5, N'Florida')  
  101. GO  
  102. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (12, 5, N'Texas')  
  103. GO  
  104. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (13, 5, N'Armed Forces US')  
  105. GO  
  106. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (14, 5, N'Tennessee')  
  107. GO  
  108. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (15, 5, N'Kentucky')  
  109. GO  
  110. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (16, 3, N'Ile-de-3nce')  
  111. GO  
  112. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (17, 5, N'Georgia')  
  113. GO  
  114. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (18, 1, N'Rio de Janeiro')  
  115. GO  
  116. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (19, 5, N'Illinois')  
  117. GO  
  118. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (20, 1, N'Ceara')  
  119. GO  
  120. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (21, 5, N'Colorado')  
  121. GO  
  122. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (22, 2, N'Zhejiang')  
  123. GO  
  124. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (23, 5, N'Utah')  
  125. GO  
  126. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (24, 2, N'Liaoning')  
  127. GO  
  128. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (25, 4, N'Haryana')  
  129. GO  
  130. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (26, 5, N'Maryland')  
  131. GO  
  132. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (27, 2, N'Shanghai')  
  133. GO  
  134. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (28, 2, N'Tianjin')  
  135. GO  
  136. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (29, 5, N'South Carolina')  
  137. GO  
  138. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (30, 5, N'Montana')  
  139. GO  
  140. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (31, 5, N'Louisiana')  
  141. GO  
  142. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (32, 2, N'Fujian')  
  143. GO  
  144. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (33, 1, N'Santa Catarina')  
  145. GO  
  146. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (34, 1, N'Espirito Santo')  
  147. GO  
  148. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (35, 5, N'Washington')  
  149. GO  
  150. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (36, 4, N'Andhra Pradesh')  
  151. GO  
  152. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (37, 5, N'Pennsylvania')  
  153. GO  
  154. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (38, 2, N'Guangxi')  
  155. GO  
  156. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (39, 5, N'North Carolina')  
  157. GO  
  158. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (40, 2, N'Shandong')  
  159. GO  
  160. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (41, 2, N'Chongqing')  
  161. GO  
  162. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (42, 5, N'Michigan')  
  163. GO  
  164. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (43, 2, N'Hubei')  
  165. GO  
  166. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (44, 4, N'Delhi')  
  167. GO  
  168. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (45, 5, N'Arkansas')  
  169. GO  
  170. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (46, 5, N'Wisconsin')  
  171. GO  
  172. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (47, 3, N'Midi-Pyrenees')  
  173. GO  
  174. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (48, 3, N'Picardie')  
  175. GO  
  176. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (49, 1, N'Bahia')  
  177. GO  
  178. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (50, 2, N'Heilongjiang')  
  179. GO  
  180. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (51, 4, N'Tamil Nadu')  
  181. GO  
  182. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (52, 5, N'Ohio')  
  183. GO  
  184. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (53, 5, N'New Mexico')  
  185. GO  
  186. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (54, 5, N'Kansas')  
  187. GO  
  188. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (55, 5, N'Oregon')  
  189. GO  
  190. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (56, 4, N'Uttar Pradesh')  
  191. GO  
  192. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (57, 5, N'Ne1ska')  
  193. GO  
  194. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (58, 5, N'West Virginia')  
  195. GO  
  196. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (59, 5, N'Virginia')  
  197. GO  
  198. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (60, 5, N'Missouri')  
  199. GO  
  200. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (61, 5, N'Mississippi')  
  201. GO  
  202. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (62, 5, N'Rhode Island')  
  203. GO  
  204. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (63, 1, N'Sao Paulo')  
  205. GO  
  206. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (64, 2, N'Shanxi')  
  207. GO  
  208. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (65, 4, N'Karnataka')  
  209. GO  
  210. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (66, 2, N'Hunan')  
  211. GO  
  212. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (67, 5, N'4iana')  
  213. GO  
  214. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (68, 5, N'Oklahoma')  
  215. GO  
  216. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (69, 5, N'Minnesota')  
  217. GO  
  218. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (70, 5, N'Alabama')  
  219. GO  
  220. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (71, 2, N'Hainan')  
  221. GO  
  222. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (72, 5, N'Arizona')  
  223. GO  
  224. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (73, 2, N'Sichuan')  
  225. GO  
  226. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (74, 5, N'South Dakota')  
  227. GO  
  228. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (75, 4, N'Maharashtra')  
  229. GO  
  230. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (76, 5, N'Nevada')  
  231. GO  
  232. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (77, 2, N'Henan')  
  233. GO  
  234. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (78, 4, N'Kerala')  
  235. GO  
  236. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (79, 5, N'New Hampshire')  
  237. GO  
  238. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (80, 5, N'Maine')  
  239. GO  
  240. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (81, 5, N'Hawaii')  
  241. GO  
  242. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (82, 4, N'Chhattisgarh')  
  243. GO  
  244. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (83, 2, N'Anhui')  
  245. GO  
  246. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (84, 5, N'District of Columbia')  
  247. GO  
  248. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (85, 5, N'Delaware')  
  249. GO  
  250. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (86, 4, N'West Bengal')  
  251. GO  
  252. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (87, 2, N'Shaanxi')  
  253. GO  
  254. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (88, 4, N'Madhya Pradesh')  
  255. GO  
  256. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (89, 4, N'Gujarat')  
  257. GO  
  258. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (90, 3, N'3nche-Comte')  
  259. GO  
  260. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (91, 5, N'Idaho')  
  261. GO  
  262. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (92, 4, N'Rajasthan')  
  263. GO  
  264. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (93, 2, N'Nei Mongol')  
  265. GO  
  266. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (94, 3, N'Alsace')  
  267. GO  
  268. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (95, 4, N'Orissa')  
  269. GO  
  270. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (96, 2, N'Jilin')  
  271. GO  
  272. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (97, 4, N'Jharkhand')  
  273. GO  
  274. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (98, 4, N'Chandigarh')  
  275. GO  
  276. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (99, 4, N'Punjab')  
  277. GO  
  278. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (100, 3, N'Languedoc-Roussillon')  
  279. GO  
  280. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (101, 4, N'Assam')  
  281. GO  
  282. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (102, 3, N'Centre')  
  283. GO  
  284. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (103, 3, N'Champagne-Ardenne')  
  285. GO  
  286. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (104, 3, N'Bretagne')  
  287. GO  
  288. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (105, 3, N'Rhone-Alpes')  
  289. GO  
  290. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (106, 3, N'Nord-Pas-de-Calais')  
  291. GO  
  292. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (107, 3, N'Lorraine')  
  293. GO  
  294. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (108, 1, N'Rio Grande do Sul')  
  295. GO  
  296. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (109, 3, N'Provence-Alpes-Cote d''Azur')  
  297. GO  
  298. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (110, 1, N'Minas Gerais')  
  299. GO  
  300. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (111, 3, N'Limousin')  
  301. GO  
  302. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (112, 2, N'Guizhou')  
  303. GO  
  304. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (113, 3, N'Haute-Normandie')  
  305. GO  
  306. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (114, 3, N'Poitou-Charentes')  
  307. GO  
  308. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (115, 5, N'Wyoming')  
  309. GO  
  310. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (116, 4, N'Daman and Diu')  
  311. GO  
  312. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (117, 1, N'Para')  
  313. GO  
  314. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (118, 3, N'Basse-Normandie')  
  315. GO  
  316. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (119, 4, N'Bihar')  
  317. GO  
  318. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (120, 3, N'Aquitaine')  
  319. GO  
  320. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (121, 1, N'Parana')  
  321. GO  
  322. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (122, 3, N'Auvergne')  
  323. GO  
  324. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (123, 1, N'Pernambuco')  
  325. GO  
  326. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (124, 3, N'Pays de la Loire')  
  327. GO  
  328. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (125, 1, N'Amazonas')  
  329. GO  
  330. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (126, 1, N'Distrito Federal')  
  331. GO  
  332. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (127, 5, N'North Dakota')  
  333. GO  
  334. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (128, 3, N'Bourgogne')  
  335. GO  
  336. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (129, 5, N'Vermont')  
  337. GO  
  338. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (130, 1, N'Goias')  
  339. GO  
  340. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (131, 4, N'Himachal Pradesh')  
  341. GO  
  342. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (132, 1, N'Sergipe')  
  343. GO  
  344. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (133, 5, N'Alaska')  
  345. GO  
  346. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (134, 1, N'Mato Grosso do Sul')  
  347. GO  
  348. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (135, 2, N'Yunnan')  
  349. GO  
  350. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (136, 4, N'Uttarakhand')  
  351. GO  
  352. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (137, 4, N'Meghalaya')  
  353. GO  
  354. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (138, 2, N'Jiangxi')  
  355. GO  
  356. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (139, 1, N'Rio Grande do Norte')  
  357. GO  
  358. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (140, 1, N'Paraiba')  
  359. GO  
  360. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (141, 1, N'Piaui')  
  361. GO  
  362. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (142, 2, N'Gansu')  
  363. GO  
  364. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (143, 4, N'Jammu and Kashmir')  
  365. GO  
  366. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (144, 4, N'Goa')  
  367. GO  
  368. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (145, 1, N'Maranhao')  
  369. GO  
  370. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (146, 1, N'Mato Grosso')  
  371. GO  
  372. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (147, 3, N'Corse')  
  373. GO  
  374. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (148, 1, N'Alagoas')  
  375. GO  
  376. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (149, 4, N'Puducherry')  
  377. GO  
  378. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (150, 4, N'Manipur')  
  379. GO  
  380. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (151, 1, N'Tocantins')  
  381. GO  
  382. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (152, 1, N'Roraima')  
  383. GO  
  384. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (153, 1, N'Rondonia')  
  385. GO  
  386. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (154, 2, N'Xizang')  
  387. GO  
  388. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (155, 2, N'Ningxia')  
  389. GO  
  390. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (156, 2, N'Xinjiang')  
  391. GO  
  392. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (157, 2, N'Qinghai')  
  393. GO  
  394. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (158, 4, N'Mizoram')  
  395. GO  
  396. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (159, 4, N'Dadra and Nagar Haveli')  
  397. GO  
  398. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (160, 4, N'Arunachal Pradesh')  
  399. GO  
  400. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (161, 4, N'Tripura')  
  401. GO  
  402. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (162, 1, N'Amapa')  
  403. GO  
  404. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (163, 1, N'Acre')  
  405. GO  
  406. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (164, 4, N'Sikkim')  
  407. GO  
  408. INSERT [dbo].[State] ([StateID], [CountryID], [StateName]) VALUES (165, 4, N'Nagaland')  
  409. GO  
  410. SET IDENTITY_INSERT [dbo].[State] OFF  
  411. GO  
  412. INSERT [dbo].[Tbl_Applicant] ([int_ApplicantID], [vch_ApplicantName], [vch_FatherName], [vch_MotherName], [dtm_DOB], [vch_CorMobileNo], [vch_EMailID]) VALUES (1, N'KIRAN KUMAR CHHATAI', N'MANOJ KUMAR CHHATAI', N'LABANYA CHHATAI', CAST(N'1999-06-10T00:00:00.000' AS DateTime), N'9778087807', N'kkc.kirankumar@rediffmail.com')  
  413. GO  
  414. INSERT [dbo].[Tbl_Applicant] ([int_ApplicantID], [vch_ApplicantName], [vch_FatherName], [vch_MotherName], [dtm_DOB], [vch_CorMobileNo], [vch_EMailID]) VALUES (2, N'Satyaprakash Samantaray', N'Dheerak Kumar', N'Nirmala Kumari', CAST(N'1979-07-11T00:00:00.000' AS DateTime), N'8798087807', N'sat.prakash@rediffmail.com')  
  415. GO  
  416. INSERT [dbo].[Tbl_Applicant] ([int_ApplicantID], [vch_ApplicantName], [vch_FatherName], [vch_MotherName], [dtm_DOB], [vch_CorMobileNo], [vch_EMailID]) VALUES (3, N'Raj kishore', N'Raj kishore Kumar', N'Seeta kishore Kumari', CAST(N'1989-08-11T00:00:00.000' AS DateTime), N'7798087807', N'raj.prakash@rediffmail.com')  
  417. GO  
  418. INSERT [dbo].[Tbl_Applicant] ([int_ApplicantID], [vch_ApplicantName], [vch_FatherName], [vch_MotherName], [dtm_DOB], [vch_CorMobileNo], [vch_EMailID]) VALUES (4, N'Saroj kishore', N'saroj kishore Kumar', N'geeta kishore Kumari', CAST(N'1974-04-14T00:00:00.000' AS DateTime), N'9498087807', N'saroj.prakash@gmail.com')  
  419. GO  
  420. INSERT [dbo].[Tbl_Company] ([int_CompID], [vch_CompName], [dtm_Join], [dtm_Leave]) VALUES (1, N'Infosys', CAST(N'2010-06-10T00:00:00.000' AS DateTime), CAST(N'2011-07-10T00:00:00.000' AS DateTime))  
  421. GO  
  422. INSERT [dbo].[Tbl_Company] ([int_CompID], [vch_CompName], [dtm_Join], [dtm_Leave]) VALUES (2, N'TCS', CAST(N'2009-01-11T00:00:00.000' AS DateTime), CAST(N'2011-02-11T00:00:00.000' AS DateTime))  
  423. GO  
  424. INSERT [dbo].[Tbl_Company] ([int_CompID], [vch_CompName], [dtm_Join], [dtm_Leave]) VALUES (3, N'IBM', CAST(N'2007-04-11T00:00:00.000' AS DateTime), CAST(N'2008-05-11T00:00:00.000' AS DateTime))  
  425. GO  
  426. INSERT [dbo].[Tbl_Company] ([int_CompID], [vch_CompName], [dtm_Join], [dtm_Leave]) VALUES (4, N'Wipro', CAST(N'2008-08-11T00:00:00.000' AS DateTime), CAST(N'2009-09-11T00:00:00.000' AS DateTime))  
  427. GO 
Step 2
 
Then, create 2 scalar functions for calculating age and years of experience of employees.
 
GetYearsOfExp: This function is used for calculating years of experience between the date of joining and the date of leaving.
  1. ALTER FUNCTION [dbo].[GetYearsOfExp]  
  2. (  
  3.    @FromDate DATETIME, @ToDate DATETIME  
  4. )  
  5. RETURNS NVARCHAR(100)  
  6. AS  
  7. BEGIN  
  8.     DECLARE @Years INT, @Months INT, @Days INT, @tmpFromDate DATETIME  
  9.     SET @Years = DATEDIFF(YEAR, @FromDate, @ToDate)  
  10.      - (CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, @FromDate, @ToDate),  
  11.               @FromDate) > @ToDate THEN 1 ELSE 0 END)   
  12.       
  13.     SET @tmpFromDate = DATEADD(YEAR, @Years , @FromDate)  
  14.     SET @Months =  DATEDIFF(MONTH, @tmpFromDate, @ToDate)  
  15.      - (CASE WHEN DATEADD(MONTH,DATEDIFF(MONTH, @tmpFromDate, @ToDate),  
  16.               @tmpFromDate) > @ToDate THEN 1 ELSE 0 END)   
  17.       
  18.     SET @tmpFromDate = DATEADD(MONTH, @Months , @tmpFromDate)  
  19.     SET @Days =  DATEDIFF(DAY, @tmpFromDate, @ToDate)  
  20.      - (CASE WHEN DATEADD(DAY, DATEDIFF(DAY, @tmpFromDate, @ToDate),  
  21.               @tmpFromDate) > @ToDate THEN 1 ELSE 0 END)   
  22.      
  23.      
  24.     --RETURN 'Years: ' + CAST(@Years AS VARCHAR(4)) +  
  25.     --        ' Months: ' + CAST(@Months AS VARCHAR(2)) +  
  26.     --        ' Days: ' + CAST(@Days AS VARCHAR(2))   
  27.   
  28.     Return CAST(@years as varchar(5)) + ' years ' +  
  29.              CAST(@months as varchar(3)) + ' months ' +  
  30.              CAST(@days as varchar(3)) + ' days'  
  31. END  
UDF_AgeInYears
 
This function is used for calculating age based on the date of birth and today's date.
  1. ALTER FUNCTION [dbo].[UDF_AgeInYears]   
  2. (  
  3. @givenDate datetime  
  4. )  
  5.   
  6. RETURNS varchar(100)  
  7. AS  
  8. BEGIN   
  9. DECLARE @tempDate datetime  
  10. DECLARE @years int, @months int, @days int  
  11.   
  12. SELECT @tempDate = @givenDate  
  13.   
  14. -- get year  
  15. SELECT @years = DATEDIFF(yy, @tempDate, GETDATE()) -  
  16.               CASE  
  17.                     WHEN  
  18.                             (MONTH(@givenDate) > MONTH(GETDATE()))  
  19.                                    OR  
  20.                             (MONTH(@givenDate) = MONTH(GETDATE())  
  21.                                           AND  
  22.                                           DAY(@givenDate) > DAY(GETDATE()))  
  23.                     THEN 1  
  24.                     ELSE 0  
  25.               END  
  26. SELECT @tempDate = DATEADD(yy, @years, @tempDate)  
  27.   
  28. -- get months  
  29. SELECT @months = DATEDIFF(m, @tempDate, GETDATE()) -  
  30.               CASE  
  31.                      WHEN  
  32.                             DAY(@givenDate) > DAY(GETDATE())  
  33.                      THEN 1  
  34.                      ELSE 0  
  35.               END  
  36. SELECT @tempDate = DATEADD(m, @months, @tempDate)  
  37.   
  38. -- get days  
  39. SELECT @days = DATEDIFF(d, @tempDate, GETDATE())  
  40.   
  41. -- output the result  
  42. Return CAST(@years as varchar(5)) + ' years ' +  
  43.              CAST(@months as varchar(3)) + ' months ' +  
  44.              CAST(@days as varchar(3)) + ' days'   
  45. END  
Step 3
 
In this step, create a stored procedure using dynamic SQL for filtering records between dates and calculating age and years of experience with other details of the employees.
  1. SET ANSI_NULLS ON  
  2. GO  
  3. SET QUOTED_IDENTIFIER ON  
  4. GO  
  5.   
  6. ----Author : Satyaprakash  
  7. ----Query : exec Sp_EmployeeDetailsWithAge @status ='DIS',@Fromdate='1979-04-04', @Todate='2000-04-04'  
  8. ----Calculate age in Year/Month/Days and filter records between dates  
  9.   
  10. ALTER procedure [dbo].[Sp_EmployeeDetailsWithAge]  
  11. @status varchar(10),  
  12. @Fromdate DATETIME=null,  
  13. @Todate DATETIME =null   
  14. AS    
  15. BEGIN   
  16. if @status ='DIS'  
  17. BEGIN   
  18. SET NOCOUNT ON;  
  19. Declare @SQLQuery AS NVarchar(4000)  
  20. Declare @ParamDefinition AS NVarchar(2000)  
  21. Set @SQLQuery ='SELECT vch_ApplicantName as ApplicantName,CONVERT (varchar, dtm_DOB, 106) as DOB,[dbo].[UDF_AgeInYears](dtm_DOB) as Age,   
  22. CONVERT (varchar, dtm_Join, 106) as DOJ, CONVERT (varchar, dtm_Leave, 106) as DOL,  
  23. [dbo].[GetYearsOfExp](dtm_Join,dtm_Leave) as Expr,  
  24. vch_FatherName as FatherName, vch_MotherName as MotherName,C.CountryName, D.StateName,  
  25. vch_CorMobileNo as Mobile, vch_EMailID as Email  
  26. FROM Tbl_Applicant A  
  27. Inner join Tbl_Company b on a.int_ApplicantID = b.int_CompID  
  28. Inner join Country c on b.int_CompID = c.CountryID  
  29. Inner join State d on c.CountryID = d.StateID where A.int_ApplicantID<>0'  
  30.   
  31. If (@Fromdate Is Not NullAND (@Todate Is Not Null)  
  32.          Set @SQLQuery = @SQLQuery + 'And (A.dtm_DOB BETWEEN @Fromdate AND @Todate)'    
  33.   
  34. Set @ParamDefinition = '@Fromdate DATETIME,@Todate DATETIME'  
  35. Execute sp_Executesql     @SQLQuery,@ParamDefinition,@Fromdate,@Todate  
  36.   
  37. END  
  38. END  
Step 4
 
Here, we need create a model class with entities which should be same as stored procedure column names. This is named "DateDetails.cs".
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel.DataAnnotations;  
  4. using System.ComponentModel.DataAnnotations.Schema;  
  5. using System.Linq;  
  6. using System.Web;  
  7.   
  8. namespace WebApplication1.Models  
  9. {  
  10.     public class DateDetails  
  11.     {  
  12.         public string ApplicantName { getset; }          
  13.         public string DOB { getset; }         
  14.         public string Age { getset; }  
  15.         public string DOJ { getset; }  
  16.         public string DOL { getset; }  
  17.         public string Expr { getset; }  
  18.         public string FatherName { getset; }  
  19.         public string MotherName { getset; }  
  20.         public string CountryName { getset; }  
  21.         public string StateName { getset; }  
  22.         public string Mobile { getset; }        
  23.         public string Email { getset; }  
  24.   
  25.         public List<DateDetails> usersinfo { getset; }  
  26.     }  
  27. }  
Step 5
 
Here, we need to create a controller named DateController.cs inside the Controllers folder. Inside the Home controller, we added a controller action method named DateView. 
 
Code Ref
  1. using WebApplication1.Models;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.ComponentModel.DataAnnotations.Schema;  
  5. using System.Data;  
  6. using System.Data.SqlClient;  
  7. using System.Linq;  
  8. using System.Web;  
  9. using System.Web.Mvc;  
  10. using System.Configuration;  
  11.   
  12. namespace WebApplication1.Controllers  
  13. {  
  14.     public class DateController : Controller  
  15.     {  
  16.         // GET: Date  
  17.         public ActionResult Index()  
  18.         {  
  19.             return View();  
  20.         }  
  21.   
  22.         public ActionResult DateView(DateTime? From, DateTime? To) //this value name should be same as input control name as used in view schtml file  
  23.         {  
  24.             //for alert purpose  
  25.             if (From > To)  
  26.             {  
  27.                 TempData["SelectOption"] = 1;  
  28.             }  
  29.             //for alert purpose  
  30.   
  31.             string mainconn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; //added connection string  
  32.             DateDetails objuser = new DateDetails();  
  33.             DataSet ds = new DataSet();  
  34.             DataTable dt = new DataTable();  
  35.             using (SqlConnection con = new SqlConnection(mainconn))  
  36.             {  
  37.                 using (SqlCommand cmd = new SqlCommand("Sp_EmployeeDetailsWithAge", con)) //stored procedure name  
  38.                 {  
  39.                     con.Open();  
  40.                     cmd.CommandType = CommandType.StoredProcedure;  
  41.                     cmd.Parameters.AddWithValue("@status""DIS"); //Parameters for filter records  
  42.                     cmd.Parameters.AddWithValue("@Fromdate", From);  
  43.                     cmd.Parameters.AddWithValue("@Todate", To);  
  44.   
  45.                     SqlDataAdapter da = new SqlDataAdapter(cmd);  
  46.                     da.Fill(ds);  
  47.                     List<DateDetails> userlist = new List<DateDetails>();  
  48.                     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)  
  49.                     {  
  50.                         DateDetails uobj = new DateDetails();  
  51.   
  52.                         uobj.ApplicantName = ds.Tables[0].Rows[i]["ApplicantName"].ToString(); //show records with selected columns  
  53.                         uobj.DOB = ds.Tables[0].Rows[i]["DOB"].ToString();  
  54.                         uobj.Age = ds.Tables[0].Rows[i]["Age"].ToString();  
  55.                         uobj.DOJ = ds.Tables[0].Rows[i]["DOJ"].ToString();  
  56.   
  57.                         uobj.DOL = ds.Tables[0].Rows[i]["DOL"].ToString();  
  58.                         uobj.Expr = ds.Tables[0].Rows[i]["Expr"].ToString();  
  59.                         uobj.FatherName = ds.Tables[0].Rows[i]["FatherName"].ToString();  
  60.                         uobj.MotherName = ds.Tables[0].Rows[i]["MotherName"].ToString();  
  61.   
  62.                         uobj.CountryName = ds.Tables[0].Rows[i]["CountryName"].ToString();  
  63.                         uobj.StateName = ds.Tables[0].Rows[i]["StateName"].ToString();  
  64.                         uobj.Mobile = ds.Tables[0].Rows[i]["Mobile"].ToString();  
  65.                         uobj.Email = ds.Tables[0].Rows[i]["Email"].ToString();  
  66.   
  67.                         userlist.Add(uobj);  
  68.                     }  
  69.                     objuser.usersinfo = userlist;  
  70.                 }  
  71.                 con.Close();  
  72.             }  
  73.             return View(objuser);  
  74.   
  75.   
  76.         }  
  77.   
  78.     }  
  79. }  
Code Description
 
Here, I added code with a description in the green comment mark "//" at one place for easier understanding.
 
Step 6
 
We need to add a view called DateView.cshtml.
 
Code Ref
  1. @model WebApplication1.Models.DateDetails  
  2.   
  3. @{  
  4.     /**/  
  5.   
  6.     ViewBag.Title = "Date Details";  
  7. }  
  8.   
  9. @*Post Data To Controller Without Page Refresh In*@  
  10. <script src="~/Scripts/jquery-3.3.1.js"></script>  
  11. <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>  
  12.   
  13. <h4>Choose Below Options:</h4>  
  14.   
  15. <style>  
  16.     table {  
  17.         font-family: arial, sans-serif;  
  18.         border-collapse: collapse;  
  19.         width: 100%;  
  20.     }  
  21.   
  22.     td, th {  
  23.         border: 1px solid #dddddd;  
  24.         text-align: left;  
  25.         padding: 8px;  
  26.     }  
  27.   
  28.     tr:nth-child(even) {  
  29.         background-color: #dddddd;  
  30.     }  
  31.   
  32.     .button {  
  33.         background-color: #4CAF50;  
  34.         border: none;  
  35.         color: white;  
  36.         padding: 15px 32px;  
  37.         text-align: center;  
  38.         text-decoration: none;  
  39.         display: inline-block;  
  40.         font-size: 16px;  
  41.         margin: 4px 2px;  
  42.         cursor: pointer;  
  43.     }  
  44.   
  45.     .button4 {  
  46.         border-radius: 9px;  
  47.     }  
  48.   
  49.     input[type=date], select {  
  50.         width: 60%;  
  51.         padding: 12px 20px;  
  52.         margin: 8px 0;  
  53.         display: inline-block;  
  54.         border: 1px solid #ccc;  
  55.         border-radius: 4px;  
  56.         box-sizing: border-box;  
  57.     }  
  58.   
  59.     input[type=text], select {  
  60.         width: 60%;  
  61.         padding: 12px 20px;  
  62.         margin: 8px 0;  
  63.         display: inline-block;  
  64.         border: 1px solid #ccc;  
  65.         border-radius: 4px;  
  66.         box-sizing: border-box;  
  67.     }  
  68. </style>  
  69. @*Filter records*@  
  70.   
  71. @using (Html.BeginForm("DateView""Date", FormMethod.Get))  
  72. {  
  73.     <span style="color:blue">From Date:</span><input type="date" name="From" />  
  74.     <span style="color:blue">To Date:</span><input type="date" name="To" /> <span> </span> <span> </span>  
  75.       
  76.     <input type="submit" name="submit" value="Search" class="button button4" />  
  77.   
  78.     <br/>  
  79.     <br/>  
  80. }  
  81.   
  82. @if (Model != null)  
  83. {  
  84.     if (Model.usersinfo.Count > 0) /*Display records*/  
  85.     {  
  86.         <table align="center" border="1" cellpadding="4" cellspacing="4">  
  87.             <tr>  
  88.                 <th style="background-color: Yellow;color: blue; width:140px">Applicant</th>  
  89.                 <th style="background-color: Yellow;color: blue; width:140px">DOB</th>  
  90.                 <th style="background-color: Yellow;color: blue; width:200px">Age</th>  
  91.                 <th style="background-color: Yellow;color: blue; width:140px">DOJ</th>  
  92.                 <th style="background-color: Yellow;color: blue; width:140px">DOL</th>  
  93.                 <th style="background-color: Yellow;color: blue; width:200px">Expr</th>  
  94.                 <th style="background-color: Yellow;color: blue; width:140px">Father</th>  
  95.                 <th style="background-color: Yellow;color: blue; width:140px">Mother</th>  
  96.                 <th style="background-color: Yellow;color: blue">Country</th>  
  97.                 <th style="background-color: Yellow;color: blue">State</th>  
  98.                 <th style="background-color: Yellow;color: blue">Mobile</th>  
  99.                 <th style="background-color: Yellow;color: blue">Email</th>  
  100.             </tr>  
  101.             @foreach (var item in Model.usersinfo)  
  102.             {  
  103.             <tr>  
  104.                 <td>@Html.DisplayFor(modelitem => item.ApplicantName) </td>  
  105.                 <td>@Html.DisplayFor(modelitem => item.DOB)</td>  
  106.                 <td>@Html.DisplayFor(modelitem => item.Age)</td>  
  107.                 <td>@Html.DisplayFor(modelitem => item.DOJ)</td>  
  108.                 <td>@Html.DisplayFor(modelitem => item.DOL) </td>  
  109.                 <td>@Html.DisplayFor(modelitem => item.Expr)</td>  
  110.                 <td>@Html.DisplayFor(modelitem => item.FatherName)</td>  
  111.                 <td>@Html.DisplayFor(modelitem => item.MotherName)</td>  
  112.                 <td>@Html.DisplayFor(modelitem => item.CountryName) </td>  
  113.                 <td>@Html.DisplayFor(modelitem => item.StateName)</td>  
  114.                 <td>@Html.DisplayFor(modelitem => item.Mobile)</td>  
  115.                 <td>@Html.DisplayFor(modelitem => item.Email)</td>  
  116.             </tr>  
  117.             }  
  118.         </table>  
  119.     }  
  120.     else  
  121.     {  
  122.         <span style="color:red"><b>No Details Found.</b></span>  
  123.     }  
  124. }  
  125.   
  126. @if (TempData["SelectOption"] != null)  
  127. {  
  128.     <script type="text/javascript">  
  129.         alert("From Date should be less than To Date");  
  130.     </script>  
  131. }   
Code Description
 
Here, I added code with a description in a green comment mark in one place for easier comprehension.
 
Step 7
 
Add some flavor to the view page by modifying it in _Layout.cshtml.
 
Code Ref
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8" />  
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">  
  6.     <title>@ViewBag.Title - My ASP.NET Application</title>  
  7.     @Styles.Render("~/Content/css")  
  8.     @Scripts.Render("~/bundles/modernizr")  
  9. </head>  
  10. <body>  
  11.     <div class="navbar navbar-fixed-top" style="background-color:orangered;">  
  12.         <h4 style="color:white; text-align:center">Calculate Age and Experience Of Employees In MVC</h4>  
  13.     </div>  
  14.     <div class="container body-content">  
  15.         @RenderBody()  
  16.         <hr />  
  17.         <footer>  
  18.             <p style="background-color: Yellow; font-weight: bold; color:blue; text-align: center; font-style: oblique">© @DateTime.Now.ToLocalTime()</p> @*Add Date Time*@  
  19.         </footer>  
  20.     </div>  
  21.   
  22.     @Scripts.Render("~/bundles/jquery")  
  23.     @Scripts.Render("~/bundles/bootstrap")  
  24.     @RenderSection("scripts", required: false)  
  25. </body>  
  26. </html>  
Output
 
The landing page is shown below:
 
CalculateAge And Experience Using Table Data And Stored Procedure In MVC
 
Then filter data between two dates. It shows the calculated age and years of experience, along with other details of the employees.
 
CalculateAge And Experience Using Table Data And Stored Procedure In MVC
 
If no records are found, then it is shown like this:
 
CalculateAge And Experience Using Table Data And Stored Procedure In MVC
Then the alert is mentioned between the from date and to date comparison.
 
CalculateAge And Experience Using Table Data And Stored Procedure In MVC
Link To Source Code

Summary

 
In this article, we have learned:
  • About scalar function and its uses in a stored procedure
  • Calculating age and years of experience between dates
  • Uses of dynamic SQL in a stored procedure for filtering records
  • Managing alert message in MVC and design view using layout