Time And Date Query Code And Analysis - Part One

Please refer to the articles of this series given below,

As we know, time is precious in our life, so I am thinking of posting some queries on time and date.
  • Frankly, there are n number of queries about time and date in the real world available on net.
  • These queries are large in number, so I am dividing this post into parts.
  • Time and Date queries are very essential in any development phase.
  • I hope you will add this section also in your new solution.
If you find any query other than this set, please post/mail them as well.
  1. Execute the following T - SQL scripts in Microsoft SQL Server Manangement –Studio Query Editor to demonstrate T - SQL convert  
  2. and cast functions in transforming –string date,  
  3. string time & string datetime data to datetime data type.T - SQL date / datetime functions — SQL Server string to date / datetime conversion – datetime string format sql server — MSSQL string to datetime conversion – convert char to date – convert varchar to date — Subtract 100  
  4. from  
  5. style number (format) for yy instead yyyy (  
  6. or ccyy with century  
  7. )  
  8. SELECT  
  9. convert(  
  10. datetime, ‘Oct 23 2012 11 : 01AM’,  
  11. 100  
  12. ) — mon dd yyyy hh : mmAM (  
  13. or PM  
  14. )  
  15. SELECT  
  16. convert(  
  17. datetime, ‘Oct 23 2012 11 : 01AM’  
  18. ) — 2012 - 10 - 23 11 : 01 : 00.000 — Without century (yy) string date conversion – convert string to datetime function  
  19. SELECT  
  20. convert(  
  21. datetime, ‘Oct 23 12 11 : 01AM’, 0  
  22. ) — mon dd yy hh : mmAM (  
  23. or PM  
  24. )  
  25. SELECT  
  26. convert(datetime, ‘Oct 23 12 11 : 01AM’) — 2012 - 10 - 23 11 : 01 : 00.000 — Convert string to datetime sql – convert string to date sql – sql dates format — T - SQL convert string to datetime – SQL Server convert string to date  
  27. SELECT  
  28. convert(datetime, ’10 / 23 / 2016′, 101) — mm / dd / yyyy  
  29. SELECT  
  30. convert(datetime, ‘2016.10.23’, 102) — yyyy.mm.dd  
  31. SELECT  
  32. convert(datetime, ’23 / 10 / 2016′, 103) — dd / mm / yyyy  
  33. SELECT  
  34. convert(datetime, ‘23.10.2016’, 104) — dd.mm.yyyy  
  35. SELECT  
  36. convert(datetime, ’23 - 10 - 2016′, 105) — dd - mm - yyyy — mon types are nondeterministic conversions,  
  37. dependent on language setting  
  38. SELECT  
  39. convert(datetime, ’23 OCT 2016′, 106) — dd mon yyyy  
  40. SELECT  
  41. convert(datetime, ‘Oct 23, 2016’, 107) — mon dd,  
  42. yyyy — 2016 - 10 - 23 00 : 00 : 00.000  
  43. SELECT  
  44. convert(datetime, ’20 : 10 : 44′, 108) — hh : mm : ss — 1900 - 01 - 01 20 : 10 : 44.000 — mon dd yyyy hh : mm : ss : mmmAM (  
  45. or PM  
  46. ) – sql time format – SQL Server datetime format  
  47. SELECT  
  48. convert(  
  49. datetime, ‘Oct 23 2016 11 : 02 : 44 : 013AM’,  
  50. 109  
  51. ) — 2016 - 10 - 23 11 : 02 : 44.013  
  52. SELECT  
  53. convert(datetime, ’10 - 23 - 2016′, 110) — mm - dd - yyyy  
  54. SELECT  
  55. convert(datetime, ‘2016 / 10 / 23’, 111) — yyyy / mm / dd — YYYYMMDD ISO date format works at any language setting – international standard  
  56. SELECT  
  57. convert(datetime, ‘20161023’)  
  58. SELECT  
  59. convert(datetime, ‘20161023’, 112) — yyyymmdd — 2016 - 10 - 23 00 : 00 : 00.000  
  60. SELECT  
  61. convert(  
  62. datetime, ’23 Oct 2016 11 : 02 : 07 : 577′,  
  63. 113  
  64. ) — dd mon yyyy hh : mm : ss : mmm — 2016 - 10 - 23 11 : 02 : 07.577  
  65. SELECT  
  66. convert(  
  67. datetime, ’20 : 10 : 25 : 300′, 114  
  68. ) — hh : mm : ss : mmm(24h) — 1900 - 01 - 01 20 : 10 : 25.300  
  69. SELECT  
  70. convert(  
  71. datetime, ‘2016 - 10 - 23 20 : 44 : 11’,  
  72. 120  
  73. ) — yyyy - mm - dd hh : mm : ss(24h) — 2016 - 10 - 23 20 : 44 : 11.000  
  74. SELECT  
  75. convert(  
  76. datetime, ‘2016 - 10 - 23 20 : 44 : 11.500’,  
  77. 121  
  78. ) — yyyy - mm - dd hh : mm : ss.mmm — 2016 - 10 - 23 20 : 44 : 11.500 — Style 126 is ISO 8601 format : international standard – works with any language setting  
  79. SELECT  
  80. convert(  
  81. datetime, ‘2008 - 10 - 23T18 : 52 : 47.513’,  
  82. 126  
  83. ) — yyyy - mm - ddThh : mm : ss(.mmm) — 2008 - 10 - 23 18 : 52 : 47.513 — Convert DDMMYYYY format to datetime – sql server to date / datetime  
  84. SELECT  
  85. convert(  
  86. datetime,  
  87. STUFF(  
  88. STUFF(‘31012016′, 3, 0, ’ - ‘),  
  89. 6,  
  90. 0,  
  91. ’ - ‘  
  92. ),  
  93. 105  
  94. ) — 2016 - 01 - 31 00 : 00 : 00.000 — SQL Server T - SQL string to datetime conversion without century – some exceptions — nondeterministic means language setting dependent such as Mar / Mär / mars / márc  
  95. SELECT  
  96. convert(  
  97. datetime, ‘Oct 23 16 11 : 02 : 44AM’  
  98. ) — Default  
  99. SELECT  
  100. convert(datetime, ’10 / 23 / 16′, 1) — mm / dd / yy U.S.  
  101. SELECT  
  102. convert(datetime, ‘16.10.23’, 2) — yy.mm.dd ANSI  
  103. SELECT  
  104. convert(datetime, ’23 / 10 / 16′, 3) — dd / mm / yy UK / FR  
  105. SELECT  
  106. convert(datetime, ‘23.10.16’, 4) — dd.mm.yy German  
  107. SELECT  
  108. convert(datetime, ’23 - 10 - 16′, 5) — dd - mm - yy Italian  
  109. SELECT  
  110. convert(datetime, ’23 OCT 16′, 6) — dd mon yy non - det.  
  111. SELECT  
  112. convert(datetime, ‘Oct 23, 16’, 7) — mon dd,  
  113. yy non - det.  
  114. SELECT  
  115. convert(datetime, ’20 : 10 : 44′, 8) — hh : mm : ss  
  116. SELECT  
  117. convert(  
  118. datetime, ‘Oct 23 16 11 : 02 : 44 : 013AM’,  
  119. 9  
  120. ) — Default with msec  
  121. SELECT  
  122. convert(datetime, ’10 - 23 - 16′, 10) — mm - dd - yy U.S.  
  123. SELECT  
  124. convert(datetime, ’16 / 10 / 23′, 11) — yy / mm / dd Japan  
  125. SELECT  
  126. convert(datetime, ‘161023’, 12) — yymmdd ISO  
  127. SELECT  
  128. convert(  
  129. datetime, ’23 Oct 16 11 : 02 : 07 : 577′,  
  130. 13  
  131. ) — dd mon yy hh : mm : ss : mmm EU dflt  
  132. SELECT  
  133. convert(datetime, ’20 : 10 : 25 : 300′, 14) — hh : mm : ss : mmm(24h)  
  134. SELECT  
  135. convert(  
  136. datetime, ‘2016 - 10 - 23 20 : 44 : 11’,  
  137. 20  
  138. ) — yyyy - mm - dd hh : mm : ss(24h) ODBC can.  
  139. SELECT  
  140. convert(  
  141. datetime, ‘2016 - 10 - 23 20 : 44 : 11.500’,  
  142. 21  
  143. ) – yyyy - mm - dd hh : mm : ss.mmm ODBC ———— — SQL Datetime Data Type : Combine date & time string into datetime – sql hh mm ss — String to datetime – mssql datetime – sql convert date – sql concatenate string DECLARE @DateTimeValue varchar(32),  
  144. @DateValue char(8),  
  145. @TimeValue char(6)  
  146. SELECT  
  147. @DateValue = ‘20120718’,  
  148. @TimeValue = ‘211920’  
  149. SELECT  
  150. @DateTimeValue = convert(  
  151. varchar,  
  152. convert(datetime, @DateValue),  
  153. 111  
  154. ) + ‘ ‘ + substring(@TimeValue, 1, 2) + ‘ : ’ + substring(@TimeValue, 3, 2) + ‘ : ’ + substring(@TimeValue, 5, 2)  
  155. SELECT  
  156. DateInput = @DateValue,  
  157. TimeInput = @TimeValue,  
  158. DateTimeOutput = @DateTimeValue;  
  159. /*  
  160. DateInput TimeInput DateTimeOutput  
  161. 20120718 211920 2012/07/18 21:19:20 */  
  162. /* Datetime 8 bytes internal storage structure  
  163. o 1st 4 bytes: number of days after the base date 1900-01-01  
  164. o 2nd 4 bytes: number of clock-ticks (3.33 milliseconds) since midnight  
  165. Smalldatetime 4 bytes internal storage structure  
  166. o 1st 2 bytes: number of days after the base date 1900-01-01  
  167. o 2nd 2 bytes: number of minutes since midnight  
  168. SELECT CONVERT(binary(8), getdate()) — 0x00009E4D 00C01272  
  169. SELECT CONVERT(binary(4), convert(smalldatetime,getdate())) — 0x9E4D 02BC  
  170. */  
  171. — SQL convert seconds to HH : MM : SS – sql times format – sql hh mm DECLARE @Seconds INT  
  172. SET  
  173. @Seconds = 20000  
  174. SELECT  
  175. HH = @Seconds / 3600,  
  176. MM = (@Seconds % 3600) / 60,  
  177. SS = (@Seconds % 60)  
  178. /* HH MM SS  
  179. 5 33 20 */  
  180. ———— — SQL Server Date Only  
  181. from  
  182. DATETIME column – get date only — T - SQL just date – truncate time  
  183. from  
  184. datetime – remove time part ———— DECLARE @Now datetime = CURRENT_TIMESTAMP — getdate()  
  185. SELECT  
  186. DateAndTime = @Now — Date portion  
  187. and Time portion,  
  188. DateString = REPLACE(  
  189. LEFT(  
  190. CONVERT (varchar, @Now, 112),  
  191. 10  
  192. ),  
  193. ’ ‘,  
  194. ’ - ‘  
  195. ),  
  196. [Date] = CONVERT(DATE, @Now) — SQL Server 2008  
  197. and on – date part,  
  198. Midnight1 = dateadd(  
  199. day,  
  200. datediff(day, 0, @Now),  
  201. 0  
  202. ),  
  203. Midnight2 = CONVERT(  
  204. DATETIME,  
  205. CONVERT(int, @Now)  
  206. ),  
  207. Midnight3 = CONVERT(  
  208. DATETIME,  
  209. CONVERT(BIGINT, @Now) & (  
  210. POWER(  
  211. Convert(bigint, 2),  
  212. 32  
  213. )-1  
  214. )  
  215. )  
  216. /* DateAndTime DateString Date Midnight1 Midnight2 Midnight3  
  217. 2010-11-02 08:00:33.657 20101102 2010-11-02 2010-11-02 00:00:00.000 2010-11-02 00:00:00.000 2010-11-02 00:00:00.000 */  
  218. ———— — SQL Server 2008 convert datetime to date – sql yyyy mm dd  
  219. SELECT  
  220. TOP (3) OrderDate = CONVERT(date, OrderDate),  
  221. Today = CONVERT(  
  222. date,  
  223. getdate()  
  224. )  
  225. FROM  
  226. AdventureWorks2008.Sales.SalesOrderHeader  
  227. ORDER BY  
  228. newid();  
  229. /* OrderDate Today  
  230. 2004-02-15 2012-06-18 …..*/  
  231. ———— — SQL date yyyy mm dd – sqlserver yyyy mm dd – date format yyyymmdd  
  232. SELECT  
  233. CONVERT(  
  234. VARCHAR(10),  
  235. GETDATE(),  
  236. 111  
  237. AS [YYYY / MM / DD]  
  238. /* YYYY/MM/DD  
  239. 2015/07/11 */  
  240. SELECT  
  241. CONVERT(  
  242. VARCHAR(10),  
  243. GETDATE(),  
  244. 112  
  245. AS [YYYYMMDD]  
  246. /* YYYYMMDD  
  247. 20150711 */  
  248. SELECT  
  249. REPLACE(  
  250. CONVERT(  
  251. VARCHAR(10),  
  252. GETDATE(),  
  253. 111  
  254. ),  
  255. ’ / ’,  
  256. ’ ‘  
  257. AS [YYYY MM DD]  
  258. /* YYYY MM DD  
  259. 2015 07 11 */  
  260. — Converting to special (non - standard) date fomats : DD - MMM - YY  
  261. SELECT  
  262. UPPER(  
  263. REPLACE(  
  264. CONVERT(  
  265. VARCHAR,  
  266. GETDATE(),  
  267. 6  
  268. ),  
  269. ’ ‘,  
  270. ’ - ‘  
  271. )  
  272. ) — 07 - MAR - 14 ———— — SQL convert date string to datetime – time  
  273. set  
  274. to 00 : 00 : 00.000  
  275. or 12 : 00AM PRINT CONVERT(datetime, ’07 - 10 - 2012′, 110) — Jul 10 2012 12 : 00AM PRINT CONVERT(datetime, ’2012 / 07 / 10′, 111) — Jul 10 2012 12 : 00AM PRINT CONVERT(datetime, ’20120710′, 112) — Jul 10 2012 12 : 00AM ———— — String to date conversion – sql date yyyy mm dd – sql date formatting — SQL Server cast string to date – sql convert date to datetime  
  276. SELECT  
  277. [Date] = CAST (@DateValue AS datetime) — 2012 - 07 - 18 00 : 00 : 00.000 — SQL convert string date to different style – sql date string formatting  
  278. SELECT  
  279. CONVERT(  
  280. varchar,  
  281. CONVERT(datetime, ‘20140508’),  
  282. 100  
  283. ) — May 8 2014 12 : 00AM — SQL Server convert date to integer DECLARE @Date datetime;  
  284. SET  
  285. @Date = getdate();  
  286. SELECT  
  287. DateAsInteger = CAST (  
  288. CONVERT(varchar, @Date, 112) as INT  
  289. );  
  290. — Result : 20161225 — SQL Server convert integer to datetime DECLARE @iDate int  
  291. SET  
  292. @iDate = 20151225  
  293. SELECT  
  294. IntegerToDatetime = CAST(  
  295. convert(varchar, @iDate) as datetime  
  296. ) — 2015 - 12 - 25 00 : 00 : 00.000 — Alternates : date - only datetime  
  297. values  
  298. — SQL Server floor date – sql convert datetime  
  299. SELECT  
  300. [DATE - ONLY] = CONVERT(  
  301. DATETIME,  
  302. FLOOR(  
  303. CONVERT(  
  304. FLOAT,  
  305. GETDATE()  
  306. )  
  307. )  
  308. )  
  309. SELECT  
  310. [DATE - ONLY] = CONVERT(  
  311. DATETIME,  
  312. FLOOR(  
  313. CONVERT(  
  314. MONEY,  
  315. GETDATE()  
  316. )  
  317. )  
  318. ) — SQL Server cast string to datetime — SQL Server datetime to string convert  
  319. SELECT  
  320. [DATE - ONLY] = CAST(  
  321. CONVERT(  
  322. varchar,  
  323. GETDATE(),  
  324. 101  
  325. AS DATETIME  
  326. ) — SQL Server dateadd function – T - SQL datediff function — SQL strip time  
  327. from  
  328. date – MSSQL strip time  
  329. from  
  330. datetime  
  331. SELECT  
  332. getdate(),  
  333. dateadd(  
  334. dd,  
  335. datediff(  
  336. dd,  
  337. 0,  
  338. getdate()  
  339. ),  
  340. 0  
  341. ) — Results : 2016 - 01 - 23 05 : 35 : 52.793 2016 - 01 - 23 00 : 00 : 00.000 — String date – 10 bytes of storage  
  342. SELECT  
  343. [STRING DATE] = CONVERT(  
  344. varchar,  
  345. GETDATE(),  
  346. 110  
  347. )  
  348. SELECT  
  349. [STRING DATE] = CONVERT(varcharCURRENT_TIMESTAMP, 110) — Same results : 01 - 02 - 2012 — SQL Server cast datetime as string – sql datetime formatting  
  350. SELECT  
  351. stringDateTime = CAST (  
  352. getdate() as varchar  
  353. ) — Dec 29 2012 3 : 47AM ——— - — SQL date range BETWEEN operator ——— - — SQL date range  
  354. select  
  355. – date range search – T - SQL date range query — Count Sales Orders for 2003 OCT - NOV DECLARE @StartDate DATETIME,  
  356. @EndDate DATETIME  
  357. SET  
  358. @StartDate = convert(DATETIME, ’10 / 01 / 2003′, 101)  
  359. SET  
  360. @EndDate = convert(DATETIME, ’11 / 30 / 2003′, 101)  
  361. SELECT  
  362. @StartDate,  
  363. @EndDate — 2003 - 10 - 01 00 : 00 : 00.000 2003 - 11 - 30 00 : 00 : 00.000  
  364. SELECT  
  365. dateadd(DAY, 1, @EndDate),  
  366. dateadd(  
  367. ms,  
  368. -3,  
  369. dateadd(DAY, 1, @EndDate)  
  370. ) — 2003 - 12 - 01 00 : 00 : 00.000 2003 - 11 - 30 23 : 59 : 59.997 — MSSQL date range  
  371. select  
  372. using >=  
  373. and <   
  374. SELECT   
  375.   [Sales Orders for 2003 OCT - NOV] = COUNT(*)   
  376. FROM   
  377.   Sales.SalesOrderHeader   
  378. WHERE   
  379.   OrderDate >= @StartDate   
  380.   AND OrderDate < dateadd(DAY, 1, @EndDate)   
  381.   /* Sales Orders for 2003 OCT-NOV    
  382.       
  383.   3668 */  
  384.   — Equivalent date range query using BETWEEN comparison — It requires a bit of trick programming   
  385. SELECT   
  386.   [Sales Orders for 2003 OCT - NOV] = COUNT(*)   
  387. FROM   
  388.   Sales.SalesOrderHeader   
  389. WHERE   
  390.   OrderDate BETWEEN @StartDate   
  391.   AND dateadd(  
  392.     ms,   
  393.     -3,   
  394.     dateadd(DAY, 1, @EndDate)  
  395.   ) — 3668 USE AdventureWorks;  
  396. — SQL between string dates   
  397. SELECT   
  398.   POs = COUNT(*)   
  399. FROM   
  400.   Purchasing.PurchaseOrderHeader   
  401. WHERE   
  402.   OrderDate BETWEEN ‘20040201’   
  403.   AND ‘20040210’ — Result : 108 — SQL BETWEEN dates without time – time stripped – time removed – date part only   
  404. SELECT   
  405.   POs = COUNT(*)   
  406. FROM   
  407.   Purchasing.PurchaseOrderHeader   
  408. WHERE   
  409.   datediff(dd, 0, OrderDate) BETWEEN datediff(dd, 0, ’20040201 12 : 11 : 39′)   
  410.   AND datediff(dd, 0, ’20040210 14 : 33 : 19′) — 108 — BETWEEN is equivalent to >= …AND….<=   
  411. SELECT   
  412.   POs = COUNT(*)   
  413. FROM   
  414.   Purchasing.PurchaseOrderHeader   
  415. WHERE   
  416.   OrderDate BETWEEN ‘2004 - 02 - 01 00 : 00 : 00.000’   
  417.   AND ‘2004 - 02 - 10 00 : 00 : 00.000’   
  418.   /* Orders with OrderDates    
  419.       
  420.   ‘2004-02-10 00:00:01.000’ – 1 second after midnight (12:00AM)    
  421.       
  422.   ‘2004-02-10 00:01:00.000’ – 1 minute after midnight    
  423.       
  424.   ‘2004-02-10 01:00:00.000’ – 1 hour after midnight    
  425.       
  426.   are not included in the two queries above. */  
  427.   — To include the entire day of 2004 - 02 - 10 use :   
  428. SELECT   
  429.   POs = COUNT(*)   
  430. FROM   
  431.   Purchasing.PurchaseOrderHeader   
  432. WHERE   
  433.   OrderDate >= ‘20040201’   
  434.   AND OrderDate < ‘20040211’ ——— - — Calculate week ranges in a year ——— - DECLARE @Year INT = ‘2016’;  
  435. WITH cteDays AS (  
  436.   SELECT   
  437.     DayOfYear = Dateadd(  
  438.       dd,   
  439.       number,   
  440.       CONVERT(  
  441.         DATE,   
  442.         CONVERT(  
  443.           char(4),   
  444.           @Year  
  445.         )+ ’0101′  
  446.       )  
  447.     )   
  448.   FROM   
  449.     master.dbo.spt_values   
  450.   WHERE   
  451.     type = ’P’  
  452. ),   
  453. CTE AS (  
  454.   SELECT   
  455.     DayOfYear,   
  456.     WeekOfYear = DATEPART(week, DayOfYear)   
  457.   FROM   
  458.     cteDays   
  459.   WHERE   
  460.     YEAR(DayOfYear)= @YEAR  
  461. )   
  462. SELECT   
  463.   WeekOfYear,   
  464.   StartOfWeek = MIN(DayOfYear),   
  465.   EndOfWeek = MAX(DayOfYear)   
  466. FROM   
  467.   CTE   
  468. GROUP BY   
  469.   WeekOfYear   
  470. ORDER BY   
  471.   WeekOfYear ———— — Date validation function ISDATE – returns 1   
  472.   or 0 – SQL datetime functions ———— DECLARE @StringDate varchar(32)   
  473. SET   
  474.   @StringDate = ‘2011 - 03 - 15 18 : 50’ IF EXISTS(  
  475.     SELECT   
  476.       *   
  477.     WHERE   
  478.       ISDATE(@StringDate) = 1  
  479.   ) PRINT ‘VALID DATE : ‘ + @StringDate ELSE PRINT ‘INVALID DATE : ‘ + @StringDate GO — Result : VALID DATE : 2011 - 03 - 15 18 : 50 DECLARE @StringDate varchar(32)   
  480. SET   
  481.   @StringDate = ‘20112 - 03 - 15 18 : 50’ IF EXISTS(  
  482.     SELECT   
  483.       *   
  484.     WHERE   
  485.       ISDATE(@StringDate) = 1  
  486.   ) PRINT ‘VALID DATE : ‘ + @StringDate ELSE PRINT ‘INVALID DATE : ‘ + @StringDate — Result : INVALID DATE : 20112 - 03 - 15 18 : 50 — First   
  487.   and last day of date periods – SQL Server 2008   
  488.   and on code DECLARE @Date DATE = ‘20161023’   
  489. SELECT   
  490.   ReferenceDate = @Date   
  491. SELECT   
  492.   FirstDayOfYear = CONVERT(  
  493.     DATE,   
  494.     dateadd(  
  495.       yy,   
  496.       datediff(yy, 0, @Date),   
  497.       0  
  498.     )  
  499.   )   
  500. SELECT   
  501.   LastDayOfYear = CONVERT(  
  502.     DATE,   
  503.     dateadd(  
  504.       yy,   
  505.       datediff(yy, 0, @Date)+ 1,   
  506.       -1  
  507.     )  
  508.   )   
  509. SELECT   
  510.   FDofSemester = CONVERT(  
  511.     DATE,   
  512.     dateadd(  
  513.       qq,   
  514.       (  
  515.         (  
  516.           datediff(qq, 0, @Date)/ 2  
  517.         )* 2  
  518.       ),   
  519.       0  
  520.     )  
  521.   )   
  522. SELECT   
  523.   LastDayOfSemester = CONVERT(  
  524.     DATE,   
  525.     dateadd(  
  526.       qq,   
  527.       (  
  528.         (  
  529.           datediff(qq, 0, @Date)/ 2  
  530.         )* 2  
  531.       )+ 2,   
  532.       -1  
  533.     )  
  534.   )   
  535. SELECT   
  536.   FirstDayOfQuarter = CONVERT(  
  537.     DATE,   
  538.     dateadd(  
  539.       qq,   
  540.       datediff(qq, 0, @Date),   
  541.       0  
  542.     )  
  543.   ) — 2016 - 10 - 01   
  544. SELECT   
  545.   LastDayOfQuarter = CONVERT(  
  546.     DATE,   
  547.     dateadd(  
  548.       qq,   
  549.       datediff(qq, 0, @Date)+ 1,   
  550.       -1  
  551.     )  
  552.   ) — 2016 - 12 - 31   
  553. SELECT   
  554.   FirstDayOfMonth = CONVERT(  
  555.     DATE,   
  556.     dateadd(  
  557.       mm,   
  558.       datediff(mm, 0, @Date),   
  559.       0  
  560.     )  
  561.   )   
  562. SELECT   
  563.   LastDayOfMonth = CONVERT(  
  564.     DATE,   
  565.     dateadd(  
  566.       mm,   
  567.       datediff(mm, 0, @Date)+ 1,   
  568.       -1  
  569.     )  
  570.   )   
  571. SELECT   
  572.   FirstDayOfWeek = CONVERT(  
  573.     DATE,   
  574.     dateadd(  
  575.       wk,   
  576.       datediff(wk, 0, @Date),   
  577.       0  
  578.     )  
  579.   )   
  580. SELECT   
  581.   LastDayOfWeek = CONVERT(  
  582.     DATE,   
  583.     dateadd(  
  584.       wk,   
  585.       datediff(wk, 0, @Date)+ 1,   
  586.       -1  
  587.     )  
  588.   ) — 2016 - 10 - 30 — Month sequence generator – sequential numbers / dates DECLARE @Date date = ‘2000 - 01 - 01’   
  589. SELECT   
  590.   MonthStart = dateadd(MM, number, @Date)   
  591. FROM   
  592.   master.dbo.spt_values   
  593. WHERE   
  594.   type = ’P’   
  595.   AND dateadd(MM, number, @Date) <= CURRENT_TIMESTAMP   
  596. ORDER BY   
  597.   MonthStart   
  598.   /* MonthStart    
  599.       
  600.   2000-01-01    
  601.       
  602.   2000-02-01    
  603.       
  604.   2000-03-01 ….*/  
  605.   ———— — Selected named date styles ———— DECLARE @DateTimeValue varchar(32) — US - Style   
  606. SELECT   
  607.   @DateTimeValue = ’10 / 23 / 2016′   
  608. SELECT   
  609.   StringDate = @DateTimeValue,   
  610.   [US - Style] = CONVERT(datetime, @DatetimeValue)   
  611. SELECT   
  612.   @DateTimeValue = ’10 / 23 / 2016 23 : 01 : 05′   
  613. SELECT   
  614.   StringDate = @DateTimeValue,   
  615.   [US - Style] = CONVERT(datetime, @DatetimeValue) — UK - Style,   
  616.   British / French – convert string to datetime sql — sql convert string to datetime   
  617. SELECT   
  618.   @DateTimeValue = ’23 / 10 / 16 23 : 01 : 05′   
  619. SELECT   
  620.   StringDate = @DateTimeValue,   
  621.   [UK - Style] = CONVERT(datetime, @DatetimeValue, 3)   
  622. SELECT   
  623.   @DateTimeValue = ’23 / 10 / 2016 04 : 01 PM’   
  624. SELECT   
  625.   StringDate = @DateTimeValue,   
  626.   [UK - Style] = CONVERT(datetime, @DatetimeValue, 103) — German - Style   
  627. SELECT   
  628.   @DateTimeValue = ‘23.10.16 23 : 01 : 05’   
  629. SELECT   
  630.   StringDate = @DateTimeValue,   
  631.   [German - Style] = CONVERT(datetime, @DatetimeValue, 4)   
  632. SELECT   
  633.   @DateTimeValue = ‘23.10.2016 04 : 01 PM’   
  634. SELECT   
  635.   StringDate = @DateTimeValue,   
  636.   [German - Style] = CONVERT(datetime, @DatetimeValue, 104) ———— — Double conversion to US - Style 107 with century : Oct 23,   
  637.   2016   
  638. SET   
  639.   @DateTimeValue = ’10 / 23 / 16′   
  640. SELECT   
  641.   StringDate = @DateTimeValue,   
  642.   [US - Style] = CONVERT(  
  643.     varchar,   
  644.     CONVERT(datetime, @DateTimeValue),   
  645.     107  
  646.   ) — Using DATEFORMAT – UK - Style – SQL dateformat   
  647. SET   
  648.   @DateTimeValue = ’23 / 10 / 16′   
  649. SET   
  650.   DATEFORMAT dmy   
  651. SELECT   
  652.   StringDate = @DateTimeValue,   
  653.   [Date Time] = CONVERT(datetime, @DatetimeValue) — Using DATEFORMAT – US - Style   
  654. SET   
  655.   DATEFORMAT mdy — Convert date string   
  656. from   
  657.   DD / MM / YYYY UK format to MM / DD / YYYY US format DECLARE @UKdate char(10) = ’15 / 03 / 2016′   
  658. SELECT   
  659.   CONVERT(  
  660.     CHAR(10),   
  661.     CONVERT(datetime, @UKdate, 103),   
  662.     101  
  663.   ) — 03 / 15 / 2016 — DATEPART datetime function example – SQL Server datetime functions   
  664. SELECT   
  665.   *   
  666. FROM   
  667.   Northwind.dbo.Orders   
  668. WHERE   
  669.   DATEPART(YEAR, OrderDate) = ‘1996’   
  670.   AND DATEPART(MONTH, OrderDate) = ’07’   
  671.   AND DATEPART(DAY, OrderDate) = ’10’ — Alternate syntax for DATEPART example   
  672. SELECT   
  673.   *   
  674. FROM   
  675.   Northwind.dbo.Orders   
  676. WHERE   
  677.   YEAR(OrderDate) = ‘1996’   
  678.   AND MONTH(OrderDate) = ’07’   
  679.   AND DAY(OrderDate) = ’10’ ———— — T - SQL calculate the number of business days function / UDF – exclude SAT & SUN ———— CREATE FUNCTION fnBusinessDays (  
  680.     @StartDate DATETIME, @EndDate DATETIME  
  681.   ) RETURNS INT AS BEGIN IF (  
  682.     @StartDate IS NULL   
  683.     OR @EndDate IS NULL  
  684.   ) RETURN (0) DECLARE @i INT = 0;  
  685. WHILE (@StartDate <= @EndDate) BEGIN   
  686. SET   
  687.   @i = @i + CASE WHEN datepart(dw, @StartDate) BETWEEN 2   
  688.   AND 6 THEN 1 ELSE 0 END   
  689. SET   
  690.   @StartDate = @StartDate + 1 END — while RETURN (@i) END — function GO   
  691. SELECT   
  692.   dbo.fnBusinessDays(  
  693.     ‘2016 - 01 - 01′, ’2016 - 12 - 31’  
  694.   ) — 261 ———— — T - SQL DATENAME function usage for weekdays   
  695. SELECT   
  696.   DayName = DATENAME(weekday, OrderDate),   
  697.   SalesPerWeekDay = COUNT(*)   
  698. FROM   
  699.   AdventureWorks2008.Sales.SalesOrderHeader   
  700. GROUP BY   
  701.   DATENAME(weekday, OrderDate),   
  702.   DATEPART(weekday, OrderDate)   
  703. ORDER BY   
  704.   DATEPART(weekday, OrderDate)   
  705.   /* DayName SalesPerWeekDay    
  706.       
  707.   Sunday 4482    
  708.       
  709.   Monday 4591    
  710.       
  711.   Tuesday 4346…. */  
  712.   — DATENAME application for months   
  713. SELECT   
  714.   MonthName = DATENAME(month, OrderDate),   
  715.   SalesPerMonth = COUNT(*)   
  716. FROM   
  717.   AdventureWorks2008.Sales.SalesOrderHeader   
  718. GROUP BY   
  719.   DATENAME(month, OrderDate),   
  720.   MONTH(OrderDate)   
  721. ORDER BY   
  722.   MONTH(OrderDate)   
  723.   /* MonthName SalesPerMonth    
  724.       
  725.   January 2483    
  726.       
  727.   February 2686    
  728.       
  729.   March 2750    
  730.       
  731.   April 2740…. */  
  732.   — Getting month name   
  733. from   
  734.   month number   
  735. SELECT   
  736.   DATENAME(  
  737.     MM,   
  738.     dateadd(MM, 7,-1)  
  739.   ) — July ———— — Extract string date   
  740. from   
  741.   text with PATINDEX pattern matching — Apply sql server string to date conversion ———— USE tempdb;  
  742. go CREATE TABLE InsiderTransaction (  
  743.   InsiderTransactionID int identity primary key,   
  744.   TradeDate datetime,   
  745.   TradeMsg varchar(256),   
  746.   ModifiedDate datetime default (  
  747.     getdate()  
  748.   )  
  749. ) — Populate table with dummy data INSERT InsiderTransaction (TradeMsg)   
  750. VALUES   
  751.   (  
  752.     ‘INSIDER TRAN QABC Hammer, Bruce D.CSO 09 - 02 - 08 Buy 2,   
  753.     000 6.10’  
  754.   ) INSERT InsiderTransaction (TradeMsg)   
  755. VALUES   
  756.   (  
  757.     ‘INSIDER TRAN QABC Schmidt, Steven CFO 08 - 25 - 08 Buy 2,   
  758.     500 6.70’  
  759.   ) INSERT InsiderTransaction (TradeMsg)   
  760. VALUES   
  761.   (  
  762.     ‘INSIDER TRAN QABC Hammer, Bruce D.CSO 08 - 20 - 08 Buy 3,   
  763.     000 8.59’  
  764.   ) INSERT InsiderTransaction (TradeMsg)   
  765. VALUES   
  766.   (  
  767.     ‘INSIDER TRAN QABC Walters, Jeff CTO 08 - 15 - 08 Sell 5,   
  768.     648 8.49’  
  769.   ) INSERT InsiderTransaction (TradeMsg)   
  770. VALUES   
  771.   (  
  772.     ‘INSIDER TRAN QABC Walters, Jeff CTO 08 - 15 - 08 Option Execute 5,   
  773.     648 2.15’  
  774.   ) INSERT InsiderTransaction (TradeMsg)   
  775. VALUES   
  776.   (  
  777.     ‘INSIDER TRAN QABC Hammer, Bruce D.CSO 07 - 31 - 08 Buy 5,   
  778.     000 8.05’  
  779.   ) INSERT InsiderTransaction (TradeMsg)   
  780. VALUES   
  781.   (  
  782.     ‘INSIDER TRAN QABC Lennot, Mark B.Director 08 - 31 - 07 Buy 1,   
  783.     500 9.97’  
  784.   ) INSERT InsiderTransaction (TradeMsg)   
  785. VALUES   
  786.   (  
  787.     ‘INSIDER TRAN QABC O”Neal, Linda COO 08 - 01 - 08 Sell 5,   
  788.     000 6.50’  
  789.   ) — Extract dates   
  790. from   
  791.   stock trade message text — Pattern match for MM - DD - YY using the PATINDEX string function   
  792. SELECT   
  793.   TradeDate = substring(  
  794.     TradeMsg,   
  795.     patindex(  
  796.       ‘ % [01][0 - 9] - [0123][0 - 9] - [0 - 9][0 - 9] % ’,   
  797.       TradeMsg  
  798.     ),   
  799.     8  
  800.   )   
  801. FROM   
  802.   InsiderTransaction   
  803. WHERE   
  804.   patindex(  
  805.     ‘ % [01][0 - 9] - [0123][0 - 9] - [0 - 9][0 - 9] % ’,   
  806.     TradeMsg  
  807.   ) > 0   
  808.   /* Partial results    
  809.       
  810.   TradeDate    
  811.       
  812.   09-02-08    
  813.       
  814.   08-25-08    
  815.       
  816.   08-20-08 */  
  817.   —   
  818. Update   
  819.   table with extracted date — Convert string date to datetime   
  820. UPDATE   
  821.   InsiderTransaction   
  822. SET   
  823.   TradeDate = convert(  
  824.     datetime,   
  825.     substring(  
  826.       TradeMsg,   
  827.       patindex(  
  828.         ‘ % [01][0 - 9] - [0123][0 - 9] - [0 - 9][0 - 9] % ’,   
  829.         TradeMsg  
  830.       ),   
  831.       8  
  832.     )  
  833.   )   
  834. WHERE   
  835.   patindex(  
  836.     ‘ % [01][0 - 9] - [0123][0 - 9] - [0 - 9][0 - 9] % ’,   
  837.     TradeMsg  
  838.   ) > 0   
  839. SELECT   
  840.   *   
  841. FROM   
  842.   InsiderTransaction   
  843. ORDER BY   
  844.   TradeDate desc   
  845.   /* Partial results    
  846.       
  847.   InsiderTransactionID TradeDate TradeMsg ModifiedDate    
  848.       
  849.   1 2008-09-02 00:00:00.000 INSIDER TRAN QABC Hammer, Bruce D. CSO 09-02-08 Buy 2,000 6.10 2008-12-22 20:25:19.263    
  850.       
  851.   2 2008-08-25 00:00:00.000 INSIDER TRAN QABC Schmidt, Steven CFO 08-25-08 Buy 2,500 6.70 2008-12-22 20:25:19.263 */  
  852.   — Cleanup task   
  853. DROP   
  854.   TABLE InsiderTransaction   
  855.   /************    
  856.       
  857.   VALID DATE RANGES FOR DATE / DATETIME DATA TYPES    
  858.       
  859.   DATE (3 bytes) date range:    
  860.       
  861.   January 1, 1 A.D. through December 31, 9999 A.D.    
  862.       
  863.   SMALLDATETIME (4 bytes) date range:    
  864.       
  865.   January 1, 1900 through June 6, 2079    
  866.       
  867.   DATETIME (8 bytes) date range:    
  868.       
  869.   January 1, 1753 through December 31, 9999    
  870.       
  871.   DATETIME2 (6-8 bytes) date range:    
  872.       
  873.   January 1, 1 A.D. through December 31, 9999 A.D.    
  874.       
  875.   — The statement below will give a date range error    
  876.       
  877.   SELECT CONVERT(smalldatetime, ‘2110-01-01’)    
  878.       
  879.   /* Msg 242, Level 16, State 3, Line 1    
  880.       
  881.   The conversion of a varchar data type to a smalldatetime data type    
  882.       
  883.   resulted in an out-of-range value. */  
  884.   ************/ ———— — SQL CONVERT DATE / DATETIME script applying table variable ———— — SQL Server convert date — Datetime column is converted into date only string column DECLARE @sqlConvertDate TABLE (  
  885.     DatetimeColumn datetime,   
  886.     DateColumn char(10)  
  887.   );  
  888. INSERT @sqlConvertDate (DatetimeColumn)   
  889. SELECT   
  890.   GETDATE()   
  891. UPDATE   
  892.   @sqlConvertDate   
  893. SET   
  894.   DateColumn = CONVERT(  
  895.     char(10),   
  896.     DatetimeColumn,   
  897.     111  
  898.   )   
  899. SELECT   
  900.   *   
  901. FROM   
  902.   @sqlConvertDate — SQL Server convert datetime – String date column converted into datetime column   
  903. UPDATE   
  904.   @sqlConvertDate   
  905. SET   
  906.   DatetimeColumn = CONVERT(Datetime, DateColumn, 111)   
  907. SELECT   
  908.   *   
  909. FROM   
  910.   @sqlConvertDate — Equivalent formulation – SQL Server cast datetime   
  911. UPDATE   
  912.   @sqlConvertDate   
  913. SET   
  914.   DatetimeColumn = CAST(DateColumn AS datetime)   
  915. SELECT   
  916.   *   
  917. FROM   
  918.   @sqlConvertDate   
  919.   /* First results    
  920.       
  921.   DatetimeColumn DateColumn    
  922.       
  923.   2012-12-25 15:54:10.363 2012/12/25 */  
  924.     
  925.   /* Second results:    
  926.       
  927.   DatetimeColumn DateColumn    
  928.       
  929.   2012-12-25 00:00:00.000 2012/12/25 */  
  930.   ———— — SQL date sequence generation with dateadd & table variable — SQL Server cast datetime to string – SQL Server insert default   
  931. values   
  932.   method DECLARE @Sequence table (  
  933.     Sequence int identity(1, 1)  
  934.   ) DECLARE @i int;  
  935. SET   
  936.   @i = 0 WHILE (@i < 500) BEGIN INSERT @Sequence DEFAULT   
  937. VALUES   
  938. SET   
  939.   @i = @i + 1 END   
  940. SELECT   
  941.   DateSequence = CAST(  
  942.     dateadd(  
  943.       day,   
  944.       Sequence,   
  945.       getdate()  
  946.     ) AS varchar  
  947.   )   
  948. FROM   
  949.   @Sequence   
  950.   /* Partial results:    
  951.       
  952.   DateSequence    
  953.       
  954.   Dec 31 2008 3:02AM    
  955.       
  956.   Jan 1 2009 3:02AM    
  957.       
  958.   Jan 2 2009 3:02AM    
  959.       
  960.   Jan 3 2009 3:02AM    
  961.       
  962.   Jan 4 2009 3:02AM */  
  963.   ———— — SQL Last Week calculations ———— — SQL last Friday – Implied string to datetime conversions in dateadd & datediff DECLARE @BaseFriday CHAR(8),   
  964.   @LastFriday datetime,   
  965.   @LastMonday datetime   
  966. SET   
  967.   @BaseFriday = ‘19000105’   
  968. SELECT   
  969.   @LastFriday = dateadd(  
  970.     dd,   
  971.     (  
  972.       datediff (  
  973.         dd, @BaseFriday, CURRENT_TIMESTAMP  
  974.       ) / 7  
  975.     ) * 7,   
  976.     @BaseFriday  
  977.   )   
  978. SELECT   
  979.   [Last Friday] = @LastFriday — Result : 2008 - 12 - 26 00 : 00 : 00.000 — SQL last Monday (last week’s Monday)   
  980. SELECT   
  981.   @LastMonday = dateadd(  
  982.     dd,   
  983.     (  
  984.       datediff (  
  985.         dd, @BaseFriday, CURRENT_TIMESTAMP  
  986.       ) / 7  
  987.     ) * 7 – 4,   
  988.     @BaseFriday  
  989.   )   
  990. SELECT   
  991.   [Last Monday] = @LastMonday — Result : 2008 - 12 - 22 00 : 00 : 00.000 — SQL last week – SUN – SAT   
  992. SELECT   
  993.   [Last Week] = CONVERT(  
  994.     varchar,   
  995.     dateadd(day, -1, @LastMonday),   
  996.     101  
  997.   )+ ‘ – ‘ + CONVERT(  
  998.     varchar,   
  999.     dateadd(day, 1, @LastFriday),   
  1000.     101  
  1001.   ) — Result : 12 / 21 / 2008 – 12 / 27 / 2008 —————– — Specific day calculations ———— — First day of current month   
  1002. SELECT   
  1003.   dateadd(  
  1004.     month,   
  1005.     datediff(  
  1006.       month,   
  1007.       0,   
  1008.       getdate()  
  1009.     ),   
  1010.     0  
  1011.   ) — 15th day of current month   
  1012. SELECT   
  1013.   dateadd(  
  1014.     day,   
  1015.     14,   
  1016.     dateadd(  
  1017.       month,   
  1018.       datediff(  
  1019.         month,   
  1020.         0,   
  1021.         getdate()  
  1022.       ),   
  1023.       0  
  1024.     )  
  1025.   ) — First Monday of current month   
  1026. SELECT   
  1027.   dateadd(  
  1028.     day,   
  1029.     (  
  1030.       9 - datepart(  
  1031.         weekday,   
  1032.         dateadd(  
  1033.           month,   
  1034.           datediff(  
  1035.             month,   
  1036.             0,   
  1037.             getdate()  
  1038.           ),   
  1039.           0  
  1040.         )  
  1041.       )  
  1042.     )% 7,   
  1043.     dateadd(  
  1044.       month,   
  1045.       datediff(  
  1046.         month,   
  1047.         0,   
  1048.         getdate()  
  1049.       ),   
  1050.       0  
  1051.     )  
  1052.   ) — Next Monday calculation   
  1053. from   
  1054.   the reference date which was a Monday DECLARE @Now datetime = GETDATE();  
  1055. DECLARE @NextMonday datetime = dateadd(  
  1056.   dd,   
  1057.   (  
  1058.     (  
  1059.       datediff(dd, ‘19000101’, @Now) / 7  
  1060.     ) * 7  
  1061.   ) + 7,   
  1062.   ‘19000101’  
  1063. );  
  1064. SELECT   
  1065.   [Now] = @Now,   
  1066.   [Next Monday] = @NextMonday — Last Friday of current month   
  1067. SELECT   
  1068.   dateadd(  
  1069.     day,   
  1070.     -7 +(  
  1071.       6 - datepart(  
  1072.         weekday,   
  1073.         dateadd(  
  1074.           month,   
  1075.           datediff(  
  1076.             month,   
  1077.             0,   
  1078.             getdate()  
  1079.           )+ 1,   
  1080.           0  
  1081.         )  
  1082.       )  
  1083.     )% 7,   
  1084.     dateadd(  
  1085.       month,   
  1086.       datediff(  
  1087.         month,   
  1088.         0,   
  1089.         getdate()  
  1090.       )+ 1,   
  1091.       0  
  1092.     )  
  1093.   ) — First day of next month   
  1094. SELECT   
  1095.   dateadd(  
  1096.     month,   
  1097.     datediff(  
  1098.       month,   
  1099.       0,   
  1100.       getdate()  
  1101.     )+ 1,   
  1102.     0  
  1103.   ) — 15th of next month   
  1104. SELECT   
  1105.   dateadd(  
  1106.     day,   
  1107.     14,   
  1108.     dateadd(  
  1109.       month,   
  1110.       datediff(  
  1111.         month,   
  1112.         0,   
  1113.         getdate()  
  1114.       )+ 1,   
  1115.       0  
  1116.     )  
  1117.   ) — First Monday of next month   
  1118. SELECT   
  1119.   dateadd(  
  1120.     day,   
  1121.     (  
  1122.       9 - datepart(  
  1123.         weekday,   
  1124.         dateadd(  
  1125.           month,   
  1126.           datediff(  
  1127.             month,   
  1128.             0,   
  1129.             getdate()  
  1130.           )+ 1,   
  1131.           0  
  1132.         )  
  1133.       )  
  1134.     )% 7,   
  1135.     dateadd(  
  1136.       month,   
  1137.       datediff(  
  1138.         month,   
  1139.         0,   
  1140.         getdate()  
  1141.       )+ 1,   
  1142.       0  
  1143.     )  
  1144.   ) ———— — SQL Last Date calculations ———— — Last day of prior month – Last day of previous month   
  1145. SELECT   
  1146.   convert(  
  1147.     varchar,   
  1148.     dateadd(  
  1149.       dd,   
  1150.       -1,   
  1151.       dateadd(  
  1152.         mm,   
  1153.         datediff(  
  1154.           mm,   
  1155.           0,   
  1156.           getdate()  
  1157.         ),   
  1158.         0  
  1159.       )  
  1160.     ),   
  1161.     101  
  1162.   ) — 01 / 31 / 2019 — Last day of current month   
  1163. SELECT   
  1164.   convert(  
  1165.     varchar,   
  1166.     dateadd(  
  1167.       dd,   
  1168.       -1,   
  1169.       dateadd(  
  1170.         mm,   
  1171.         datediff(  
  1172.           mm,   
  1173.           0,   
  1174.           getdate()  
  1175.         )+ 1,   
  1176.         0  
  1177.       )  
  1178.     ),   
  1179.     101  
  1180.   ) — 02 / 28 / 2019 — Last day of prior quarter – Last day of previous quarter   
  1181. SELECT   
  1182.   convert(  
  1183.     varchar,   
  1184.     dateadd(  
  1185.       dd,   
  1186.       -1,   
  1187.       dateadd(  
  1188.         qq,   
  1189.         datediff(  
  1190.           qq,   
  1191.           0,   
  1192.           getdate()  
  1193.         ),   
  1194.         0  
  1195.       )  
  1196.     ),   
  1197.     101  
  1198.   ) — 12 / 31 / 2018 — Last day of current quarter – Last day of current quarter   
  1199. SELECT   
  1200.   convert(  
  1201.     varchar,   
  1202.     dateadd(  
  1203.       dd,   
  1204.       -1,   
  1205.       dateadd(  
  1206.         qq,   
  1207.         datediff(  
  1208.           qq,   
  1209.           0,   
  1210.           getdate()  
  1211.         )+ 1,   
  1212.         0  
  1213.       )  
  1214.     ),   
  1215.     101  
  1216.   ) — 03 / 31 / 2019 — Last day of prior year – Last day of previous year   
  1217. SELECT   
  1218.   convert(  
  1219.     varchar,   
  1220.     dateadd(  
  1221.       dd,   
  1222.       -1,   
  1223.       dateadd(  
  1224.         yy,   
  1225.         datediff(  
  1226.           yy,   
  1227.           0,   
  1228.           getdate()  
  1229.         ),   
  1230.         0  
  1231.       )  
  1232.     ),   
  1233.     101  
  1234.   ) — 12 / 31 / 2018 — Last day of current year   
  1235. SELECT   
  1236.   convert(  
  1237.     varchar,   
  1238.     dateadd(  
  1239.       dd,   
  1240.       -1,   
  1241.       dateadd(  
  1242.         yy,   
  1243.         datediff(  
  1244.           yy,   
  1245.           0,   
  1246.           getdate()  
  1247.         )+ 1,   
  1248.         0  
  1249.       )  
  1250.     ),   
  1251.     101  
  1252.   ) — 12 / 31 / 2019 ———— — SQL Server dateformat   
  1253.   and language setting ———— — T - SQL   
  1254. set   
  1255.   language – String to date conversion   
  1256. SET   
  1257.   LANGUAGE us_english   
  1258. SELECT   
  1259.   CAST(‘2018 - 03 - 15’ AS datetime) — 2018 - 03 - 15 00 : 00 : 00.000   
  1260. SET   
  1261.   LANGUAGE british   
  1262. SELECT   
  1263.   CAST(‘2018 - 03 - 15’ AS datetime)   
  1264.   /* Msg 242, Level 16, State 3, Line 2    
  1265.       
  1266.   The conversion of a varchar data type to a datetime data type resulted in    
  1267.       
  1268.   an out-of-range value.    
  1269.       
  1270.   */  
  1271. SELECT   
  1272.   CAST(‘2018 - 15 - 03’ AS datetime) — 2018 - 03 - 15 00 : 00 : 00.000   
  1273. SET   
  1274.   LANGUAGE us_english — SQL dateformat with language dependency   
  1275. SELECT   
  1276.   name,   
  1277.   alias,   
  1278.   dateformat   
  1279. FROM   
  1280.   sys.syslanguages   
  1281. WHERE   
  1282.   langid in (0, 1, 2, 4, 5, 6, 7, 10, 11, 13, 23, 31) GO   
  1283.   /*    
  1284.       
  1285.   name alias dateformat    
  1286.       
  1287.   us_english English mdy    
  1288.       
  1289.   Deutsch German dmy    
  1290.       
  1291.   Français French dmy    
  1292.       
  1293.   Dansk Danish dmy    
  1294.       
  1295.   Español Spanish dmy    
  1296.       
  1297.   Italiano Italian dmy    
  1298.       
  1299.   Nederlands Dutch dmy    
  1300.       
  1301.   Suomi Finnish dmy    
  1302.       
  1303.   Svenska Swedish ymd    
  1304.       
  1305.   magyar Hungarian ymd    
  1306.       
  1307.   British British English dmy    
  1308.       
  1309.   Arabic Arabic dmy */  
  1310.   ————   
  1311. SELECT   
  1312.   REPLACE(  
  1313.     CONVERT(  
  1314.       VARCHAR(10),   
  1315.       GETDATE(),   
  1316.       103  
  1317.     ),   
  1318.     ‘ / ’,   
  1319.     ”  
  1320.   ) AS [DDMMYYYY] to fetch only years declare @GiveAge date = getdate() print cast(  
  1321.     YEAR(@GiveAge) as int  
  1322.   )% 100 YEAR(@GiveAge, yy) mmddyy ::   
  1323. select   
  1324.   replace(  
  1325.     convert(  
  1326.       char(10),   
  1327.       getdate(),   
  1328.       101  
  1329.     ),   
  1330.     ‘ / ’,   
  1331.     ”  
  1332.   ) –CURRENT_TIMESTAMP –CURRENT_TIMESTAMP is a nondeterministic function.Views   
  1333.   and expressions that reference this column cannot be indexed.— CURRENT_TIMESTAMP can be used to print the current date   
  1334.   and time every time that the report is produced.–GETDATE() –GETDATE is a nondeterministic function.Views   
  1335.   and expressions that reference this column –cannot be indexed.GETDATE can be used to print the current date   
  1336.   and time every time that the report is produced.–{fn Now() } –The {fn Now() } is an ODBC canonical function which can be used in T - SQL since the OLE DB –provider for SQL Server supports them.{fn Now() } can be used to print the current date   
  1337.   and time every time that the report is produced.–If you run following script in Query Analyzer.I will give you same results.If you see execution –plan there is no performance difference.It is same for all the three   
  1338. select   
  1339.   statement.  
  1340. SELECT   
  1341.   CURRENT_TIMESTAMP GO   
  1342. SELECT   
  1343.   {fn NOW() } GO   
  1344. SELECT   
  1345.   GETDATE() GO