{"id":8281,"date":"2015-10-08T11:03:08","date_gmt":"2015-10-08T15:03:08","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=8281"},"modified":"2017-11-06T13:48:41","modified_gmt":"2017-11-06T18:48:41","slug":"date-time-boost","status":"publish","type":"post","link":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/","title":{"rendered":"IRI Date &#038; Time Functionality Gets a Boost"},"content":{"rendered":"<p>IRI software can now perform advanced\u00a0date\/time format conversion and value calculation\u00a0using the C++ <a href=\"https:\/\/www.google.com\/url?q=http:\/\/www.boost.org\/&amp;sa=D&amp;usg=AFQjCNF9Fjub_TVaGmVrMXIUYRpJVof_bA\">Boost<\/a>\u00a9 Date_Time\u00a0library. It supports input date\u00a0and\/or time\u00a0data in generic or custom formats, the ability to add or subtract by time unit (i.e., years, hours, etc.), and output\u00a0to any target\/format.<\/p>\n<p>Boost support is in the form of new, field-level library functions available in <a href=\"https:\/\/www.google.com\/url?q=http:\/\/www.iri.com\/products\/cosort\/sortcl&amp;sa=D&amp;usg=AFQjCNGltcMrNI8MpDlR-otjQVGh5QBs4Q\">SortCL<\/a>\u00a0programs for users of the <a href=\"http:\/\/www.iri.com\/products\/voracity\" target=\"_blank\" rel=\"noopener\">IRI Voracity<\/a> data management platform or\u00a0standalone\u00a0<a href=\"https:\/\/www.google.com\/url?q=http:\/\/www.iri.com\/products\/cosort&amp;sa=D&amp;usg=AFQjCNFQ-wiEGZyRc6_o1_Iv42zKYN6z6Q\">IRI CoSort<\/a>\u00a0product. It is an alternative to the SortCL \/TEMPLATE feature for defining <a href=\"https:\/\/www.google.com\/url?q=http:\/\/www.iri.com\/blog\/data-transformation2\/date-format-masking&amp;sa=D&amp;usg=AFQjCNHvpHqFmmi1W7VJU5jFj_9cuMDgiQ\">custom date<\/a>\u00a0and numeric masks, and building compound data values for formatting. However, multinational date logic was not built in and thus prompted IRI\u2019s interest in Boost.<\/p>\n<p><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 2.00px; height: 2.00px;\"><img decoding=\"async\" style=\"width: 2.00px; height: 2.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-.jpg\" alt=\"\" \/><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 221.00px; height: 68.00px;\"><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" style=\"width: 221.00px; height: 68.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-1.jpg\" alt=\"boost C++ libraries\" width=\"221\" height=\"68\" \/><\/a><\/span><\/p>\n<p>Boost\u2019s date and time addition, subtraction, and format conversion features can be performed before or after sorting and\u00a0other data manipulations\u00a0using the function change_dt()\u00a0in a \/FIELD statement.<\/p>\n<p><strong>Use Cases<\/strong><\/p>\n<ul>\n<li>Your source data contains dates, times, or time-stamps in a custom or outdated format and you need to process the data in CoSort, NextForm or FieldShield.<\/li>\n<li>You need to adjust date \/ time values, adding or subtracting X number of days, hours, etc.<\/li>\n<li>Your date \/ time target columns\u00a0need\u00a0to be in a different format than the source.<\/li>\n<\/ul>\n<p><strong>Summary of change_dt()<\/strong><\/p>\n<p>There are four variations of the external function change_dt():<\/p>\n<ol start=\"1\">\n<li><em>Argument &#8211; change_dt(Source, String outFormat)<\/em><br \/>\nChanges source data from a generic date \/ time format to the provided new format.<\/li>\n<li><em>Argument v.1 &#8211; change_dt(Source, String inFormat, String outFormat)<\/em><br \/>\nChanges source data from a custom date \/ time format to the provided new format.<\/li>\n<li><em>Argument v.2 &#8211; change_dt(Source, numAdjust, String timeUnit)<\/em><br \/>\nAdds or subtracts a \u00a0number (numAdjust) of unit type timeUnit (days, months, etc.) from the source data.\u00a0Input format must be generic, if not, use the change_dt() arguments below.<\/li>\n<li><em>Argument &#8211; change_dt(Source, numAdjust, String timeUnit, String inFormat, String outFormat)<\/em><br \/>\nAdds or Subtracts a number (numAdjust) of unit type timeUnit (days, months, etc.) from the source data and changes the date \/ time format from inFormat to outFormat. \u00a0Both formats override the \/FIELD statements\u2019 &#8216;TYPE=&#8217; specification.\u00a0If either argument\u00a0contains an empty string (i.e.,\u00a0&#8220;&#8221;), a supported TYPE\u00a0can be set instead.<\/li>\n<\/ol>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-2.jpg\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8285 size-medium aligncenter\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-2-231x300.jpg\" alt=\"IRI Date Time Functionality Gets a Boost\" width=\"231\" height=\"300\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-2-231x300.jpg 231w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-2.jpg 790w\" sizes=\"(max-width: 231px) 100vw, 231px\" \/><br \/>\n<\/a><strong><br \/>\nExample 1 \u2013 Custom Time-stamp Reformatting<\/strong><\/p>\n<p>The source timestamp column uses an outdated format like \u20181976 30 04..59\/\/59\/\/23\u2019, which equates to \u2018year day month..seconds\/\/minutes\/\/hours(24)&#8217;. The input file, Ex1In.txt contains 100 timestamps in this custom\u00a0format.<\/p>\n<p>1. \u00a0Using format specifiers*, we create a representation of the original timestamp format as a string:<\/p>\n<p>\u201c%Y %d %m..%S\/\/%M\/\/%H\u201d<\/p>\n<p>2. \u00a0Using format specifiers*, we create a representation of the timestamp format we want to output as:<\/p>\n<p>\u201c%m\/%d\/%Y %I:%M:%S %p\u201d (AMERICAN_TIMESTAMP format)<\/p>\n<p>3. \u00a0Specify both format strings in the function in a job script like this:<\/p>\n<p><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 664.80px; height: 124.00px;\"><a title=\"Example1Pic.png\" href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example1Pic.png\" rel=\"prettyPhoto\"><img decoding=\"async\" style=\"width: 664.80px; height: 124.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/t_Example1Pic.png\" alt=\"Example1Pic.png\" \/><\/a><\/span><\/p>\n<p>4. \u00a0Run the job from the command line, from IRI Workbench, a batch file, or third-party scheduler. The source and target files are:<\/p>\n<pre>Ex1In.txt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Ex1Out.txt\r\n\r\n1976 30 04..59\/\/59\/\/03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a004\/30\/1976 03:59:59 AM\r\n2016 21 03..58\/\/01\/\/13\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a003\/21\/2016 01:01:58 PM\r\n1988 30 04..03\/\/59\/\/11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a004\/30\/1988 11:59:03 AM\r\n2009 21 01..38\/\/58\/\/12\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a001\/21\/2009 12:58:38 PM\r\n1944 10 02..59\/\/39\/\/14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a002\/10\/1944 02:39:59 PM\r\n2006 08 04..51\/\/59\/\/21\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a004\/08\/2006 09:59:51 PM\r\n2007 18 05..59\/\/07\/\/02\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a005\/18\/2007 02:07:59 AM\r\n2001 22 08..58\/\/45\/\/03\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a008\/22\/2001 03:45:58 AM\r\n2002 20 09..49\/\/59\/\/22\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a009\/20\/2002 10:59:49 PM\r\n2000 22 09..21\/\/42\/\/15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a009\/22\/2000 03:42:21 PM\r\n<\/pre>\n<p>The target file\u00a0contains all the dates\u00a0in the new format. Note also\u00a0that the 24-hour-based time value was also converted to its 12-hour format equivalent.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Example 2 \u2013 Reformatting Custom Time-stamps while Changing the Date and Sorting<\/strong><\/p>\n<p>The source timestamp column uses an outdated format like \u201c19760430 11..59..59..pm\u201d, which equates to &#8216;yearsmonthsdays hours(12)..minutes..seconds..ampm&#8217;. The input file Ex2In.txt contains 100 timestamps in this custom format.<\/p>\n<p>1. \u00a0Using format specifiers*, we create a representation of the timestamp format as a string:<\/p>\n<p>\u201c%Y%m%d %I..%M..%S..%p\u201d<\/p>\n<p>2. \u00a0Using format specifiers*, we create a representation of the timestamp format we want to output as:<\/p>\n<p>\u201c%Y-%m-%d %H:%M:%S\u201d\u00a0(ISO_TIMESTAMP format)<\/p>\n<p>3. \u00a0Input the format strings into the function inside the script as arguments 4 and 5. \u00a0Notice, this time we&#8217;re executing change_dt() in an \/INREC \/FIELD because we want to sort the data as well, so we convert and adjust the timestamp before the sort phase.<\/p>\n<p>4. \u00a0Input the number 5 as the second argument and the time unit \u201chours\u201d as\u00a0the third. This will add 5 hours to all dates.\u00a0Or, use a negative number (-5) to subtract.<\/p>\n<p><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 664.80px; height: 177.33px;\"><a title=\"Example2Pic.png\" href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png\" rel=\"prettyPhoto\"><img decoding=\"async\" style=\"width: 664.80px; height: 177.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/t_Example2Pic.png\" alt=\"Example2Pic.png\" \/><\/a><\/span><\/p>\n<p>4. \u00a0Run the job from the command line, from IRI Workbench, a batch file, or third-party scheduler. The source and target files are:<\/p>\n<pre>Ex2In.txt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Ex2Out.txt\r\n\r\n19760430 03..59..59..AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01944-02-10 19:39:59\r\n20160321 01..01..58..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01976-04-30 08:59:59\r\n19880430 11..59..03..AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01988-04-30 16:59:03\r\n20090121 12..58..38..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02000-09-22 20:42:21\r\n19440210 02..39..59..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02001-08-22 08:45:58\r\n20060408 09..59..51..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02002-09-21 03:59:49\r\n20070518 02..07..59..AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02006-04-09 02:59:51\r\n20010822 03..45..58..AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02007-05-18 07:07:59\r\n20020920 10..59..49..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-01-21 17:58:38\r\n20000922 03..42..21..PM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02016-03-21 18:01:58\r\n<\/pre>\n<p>The target file\u00a0contains all the dates in the new format, with the 12-hour time changed to 24-hour. \u00a0Additionally, 5 hours have been added to each timestamp, and they are sorted from low to high.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Example 3 \u2013 Reformatting Custom Time-stamps Containing Additional Information<\/strong><\/p>\n<p>Source data is provided in an outdated custom time-stamp format \u201cSun Jun 07 09:00:00 UTC+0200 2009\u201d. \u00a0This equates to &#8216;abrvDayName abrvMonthName days hours(24):minutes:seconds UTC-Offset year&#8217;.\u00a0Our job requires we drop the written month of year, day of week, and UTC-TIMEZONE and output to a clean ISO_TIMESTAMP format.<\/p>\n<p>File Ex3In.txt contains 100 time-stamps in this outdated custom input format.<\/p>\n<p>1. \u00a0Using format specifiers*, we create a representation of the time-stamp format as a string:<\/p>\n<p>\u201c%a %b %d %H:%M:%S UTC+0000 %Y\u201d<\/p>\n<p>Note that no specifier is used to represent UTC-TIMEZONE, only the letters UTC as written in the Source data, and +0000 as default values. \u00a0Currently, Boost does not allow for the input of UTC-TIMEZONE, so this is a way of still being able to input the time-stamp data for conversion and \/ or adjustment, while ignoring the UTC-TIMEZONE.<\/p>\n<p>2. \u00a0Using format specifiers*, we create a representation of the time-stamp format we want to output as:<\/p>\n<p>\u201c%Y-%m-%d %H:%M:%S\u201d (ISO_TIMESTAMP format)<\/p>\n<p>3. \u00a0Input the format strings into the function inside the script as shown below.<\/p>\n<p><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 664.80px; height: 124.00px;\"><a title=\"Example3Pic.png\" href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example3Pic.png\" rel=\"prettyPhoto\"><img decoding=\"async\" style=\"width: 664.80px; height: 124.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/t_Example3Pic.png\" alt=\"Example3Pic.png\" \/><\/a><\/span><\/p>\n<p>4. \u00a0Run the job from the command line, from IRI Workbench, a batch file, or third-party scheduler. The source and target files are:<\/p>\n<pre>Ex3In.txt                                        Ex3Out.txt\r\n\r\nSun Jun 07 09:00:00 UTC+0200 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-07 09:00:00\r\nMon Jun 08 02:00:00 UTC-1000 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-08 02:00:00\r\nTue Jun 09 13:59:59 UTC+0900 2012\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02012-06-09 13:59:59\r\nWed Jun 10 14:00:00 UTC-0800 2015\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02015-06-10 14:00:00\r\nThu Jun 11 09:00:00 UTC+0200 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-11 09:00:00\r\nFri Jun 12 02:00:00 UTC-1000 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-12 02:00:00\r\nSat Jun 13 13:59:59 UTC+0900 2012\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02012-06-13 13:59:59\r\nSun Jun 14 14:00:00 UTC-0800 2015\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02015-06-14 14:00:00\r\nMon Jun 15 09:00:00 UTC+0200 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-15 09:00:00\r\nTue Jun 16 02:00:00 UTC-1000 2009\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02009-06-16 02:00:00\r\n<\/pre>\n<p>The target\u00a0contains all the dates\u00a0in the new format, while disregarding the UTC-TIMEZONE designation from\u00a0the source.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 491.50px; height: 369.10px;\"><a title=\"IRI Date &amp; Time Functionality Gets a Boost - Dustin Ellsworth .jpg\" href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-3.jpg\" rel=\"prettyPhoto\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"width: 492px; height: 369px; margin-left: 0px; margin-top: 0px; transform: rotate(0rad) translateZ(0px);\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/t_IRI-Date-Time-Functionality-Gets-a-Boost-Dustin-Ellsworth-1.jpg\" alt=\"The target contains all the dates in the new format.\" width=\"492\" height=\"369\" \/><\/a><\/span><\/p>\n<p><em>Oracle SQL Developer dialog<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>* Boost Exceptions: \u00a0All basic Boost format specifiers function for input and output.\u00a0Some of the &#8216;combination&#8217; specifiers, such as %r, which is equivalent to &#8216;%I:%M:%S %p&#8217;, can only be used as output formats. In a case such as this, simply use &#8216;%I:%M:%S %p&#8217; in place of %r and input will work as expected.\u00a0UTC-TIMEZONE data cannot be input for manipulation at this time. Also, specify all months, days, hours, minutes, and seconds in double-digit format (01, not 1) to avoid error messages. See the latest Boost Date_Time format specifiers here: <a href=\"https:\/\/www.google.com\/url?q=http:\/\/www.boost.org\/doc\/libs\/1_59_0\/doc\/html\/date_time\/date_time_io.html%23date_time.format_flags&amp;sa=D&amp;usg=AFQjCNHojcdeMOHRY3O4obg7K32tNYvq3Q\">Boost_1.59.0 Format Specifiers<\/a>\u00a0*<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IRI software can now perform advanced\u00a0date\/time format conversion and value calculation\u00a0using the C++ Boost\u00a9 Date_Time\u00a0library. It supports input date\u00a0and\/or time\u00a0data in generic or custom formats, the ability to add or subtract by time unit (i.e., years, hours, etc.), and output\u00a0to any target\/format. Boost support is in the form of new, field-level library functions available in<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\" title=\"IRI Date &#038; Time Functionality Gets a Boost\">Read More<\/a><\/div>\n","protected":false},"author":90,"featured_media":8289,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1,776],"tags":[933,932,934,930,936,546,788,850,935,68,929,931],"class_list":["post-8281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-transformation2","category-etl","tag-boost","tag-c-boost-date_time-library","tag-custom-format","tag-datetime-format-conversion","tag-field-level-library-functions","tag-iri-cosort","tag-iri-software","tag-iri-workbench","tag-oracle-sql-developer-dialog","tag-sortcl","tag-target-files","tag-value-calculation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.4 (Yoast SEO v23.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>IRI Date &amp; Time Functionality Gets a Boost - IRI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IRI Date &amp; Time Functionality Gets a Boost\" \/>\n<meta property=\"og:description\" content=\"IRI software can now perform advanced\u00a0date\/time format conversion and value calculation\u00a0using the C++ Boost\u00a9 Date_Time\u00a0library. It supports input date\u00a0and\/or time\u00a0data in generic or custom formats, the ability to add or subtract by time unit (i.e., years, hours, etc.), and output\u00a0to any target\/format. Boost support is in the form of new, field-level library functions available inRead More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-08T15:03:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-06T18:48:41+00:00\" \/>\n<meta name=\"author\" content=\"Dustin Ellsworth\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dustin Ellsworth\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\"},\"author\":{\"name\":\"Dustin Ellsworth\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/55cf6dfada12b9d79fd2122ffaf8340f\"},\"headline\":\"IRI Date &#038; Time Functionality Gets a Boost\",\"datePublished\":\"2015-10-08T15:03:08+00:00\",\"dateModified\":\"2017-11-06T18:48:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\"},\"wordCount\":1064,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png\",\"keywords\":[\"Boost\",\"C++ Boost\u00a9 Date_Time library\",\"custom format\",\"date\/time format conversion\",\"field-level library functions\",\"IRI CoSort\",\"IRI software\",\"IRI Workbench\",\"Oracle SQL Developer dialog\",\"SortCL\",\"target files\",\"value calculation\"],\"articleSection\":[\"Data Transformation\",\"ETL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\",\"url\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\",\"name\":\"IRI Date & Time Functionality Gets a Boost - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png\",\"datePublished\":\"2015-10-08T15:03:08+00:00\",\"dateModified\":\"2017-11-06T18:48:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png\",\"width\":766,\"height\":205},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IRI Date &#038; Time Functionality Gets a Boost\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.iri.com\/blog\/#website\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/55cf6dfada12b9d79fd2122ffaf8340f\",\"name\":\"Dustin Ellsworth\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/baffd41bc4c1e4f7e903809474ce1d35?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/baffd41bc4c1e4f7e903809474ce1d35?s=96&d=blank&r=g\",\"caption\":\"Dustin Ellsworth\"},\"url\":\"https:\/\/www.iri.com\/blog\/author\/dustinellsworth\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"IRI Date & Time Functionality Gets a Boost - IRI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/","og_locale":"en_US","og_type":"article","og_title":"IRI Date & Time Functionality Gets a Boost","og_description":"IRI software can now perform advanced\u00a0date\/time format conversion and value calculation\u00a0using the C++ Boost\u00a9 Date_Time\u00a0library. It supports input date\u00a0and\/or time\u00a0data in generic or custom formats, the ability to add or subtract by time unit (i.e., years, hours, etc.), and output\u00a0to any target\/format. Boost support is in the form of new, field-level library functions available inRead More","og_url":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/","og_site_name":"IRI","article_published_time":"2015-10-08T15:03:08+00:00","article_modified_time":"2017-11-06T18:48:41+00:00","author":"Dustin Ellsworth","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dustin Ellsworth","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#article","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/"},"author":{"name":"Dustin Ellsworth","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/55cf6dfada12b9d79fd2122ffaf8340f"},"headline":"IRI Date &#038; Time Functionality Gets a Boost","datePublished":"2015-10-08T15:03:08+00:00","dateModified":"2017-11-06T18:48:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/"},"wordCount":1064,"commentCount":1,"publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png","keywords":["Boost","C++ Boost\u00a9 Date_Time library","custom format","date\/time format conversion","field-level library functions","IRI CoSort","IRI software","IRI Workbench","Oracle SQL Developer dialog","SortCL","target files","value calculation"],"articleSection":["Data Transformation","ETL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/","url":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/","name":"IRI Date & Time Functionality Gets a Boost - IRI","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png","datePublished":"2015-10-08T15:03:08+00:00","dateModified":"2017-11-06T18:48:41+00:00","breadcrumb":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#primaryimage","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png","width":766,"height":205},{"@type":"BreadcrumbList","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/date-time-boost\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"IRI Date &#038; Time Functionality Gets a Boost"}]},{"@type":"WebSite","@id":"https:\/\/www.iri.com\/blog\/#website","url":"https:\/\/www.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iri.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/www.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/55cf6dfada12b9d79fd2122ffaf8340f","name":"Dustin Ellsworth","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/baffd41bc4c1e4f7e903809474ce1d35?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/baffd41bc4c1e4f7e903809474ce1d35?s=96&d=blank&r=g","caption":"Dustin Ellsworth"},"url":"https:\/\/www.iri.com\/blog\/author\/dustinellsworth\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2015\/10\/Example2Pic.png","_links":{"self":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/8281"}],"collection":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=8281"}],"version-history":[{"count":25,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/8281\/revisions"}],"predecessor-version":[{"id":11769,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/8281\/revisions\/11769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media\/8289"}],"wp:attachment":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=8281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=8281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=8281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}