Date format from Jan 01 2015 11:00:00 PM to 01/01/2015 23.00.00


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Date format from Jan 01 2015 11:00:00 PM to 01/01/2015 23.00.00
# 1  
Old 05-11-2015
Date format from Jan 01 2015 11:00:00 PM to 01/01/2015 23.00.00

I need to change Date and time stamp format from Jan 01 2015 11:00:00 PM to 01/01/2015 23.00.00

Existing Format : Mon DD YYYY hh:mi:ss AM/PM (Jan 01 2015 11:00:00 PM)

Expected Format: MM/DD/YYYY hh.mi.ss 24 hours (01/01/2015 23.00.00)

I need to update enitire file where used date and time.

File size is more than 2 gb and have 10 millon records in file.

Unix vesrion : AIX

Appreciate any help that you can provide.

Last edited by Don Cragun; 05-11-2015 at 04:08 AM.. Reason: Add ICODE tags.
# 2  
Old 05-11-2015
Is this a homework assignment?

What have you tried to solve this problem?

Do these date and time stamps appear on lines by themselves? Or at the start of lines? Or at a fixed location other than the start of a line? If not, how can the date and time stamps be uniquely identified as distinct from other text that might appear in your data?

Is this data contained in a text file? What is the format of data in your input file other than the date and time strings?

Is this a stand-alone project, or is other processing going to be done to your data at the same time? If other processing is being done, what tools are being used to do the other processing?

Your sample data and the format you showed us for your sample data is inconsistent. Is there one space between the day and the year as shown in:
Code:
Mon DD YYYY hh:mi:ss AM/PM

Or are there two spaces as shown in:
Code:
Jan 01  2015 11:00:00 PM

?
# 3  
Old 05-11-2015
Date and time formats

Thanks for quick responce.


Data is availble in .txt files, using .txt files to load data into database.
when data loading into Database, we are cnverting date and time formats using Datbase functions.
It 's taking long time to convert date and time to Datatbase default fomat.
so we are planing to convert the data in file level then load data into Database.

Have space between Day and year.

Data in files:

File1 :
Code:
Richard|Standard | Not asigned| Insured | New York |  Jan 01  2015 11:00:00 PM
John | Not Standard |  asigned| Insured | New York |  Jan 01  2015 11:00:00 PM
James | No| Assigned| No| New york |  Jan 01  2015 11:00:00 PM

File 2":
Code:
Richard|Standard |Nov 01 2014 10:00:00 PM| Not asigned| Insured | New York |  Jan 01  2015 11:00:00 PM
John | Not Standard | Jan 05 2014 11:00:00 PM|  asigned| Insured | New York |  Jan 01  2015 11:00:00 PM
James | No|Sep 01 2014 10:00:00 AM| Assigned| No| New york |  Jan 01  2015 11:00:00 PM

Moderator's Comments:
Mod Comment
Please wrap all code, files, input & output/errors in CODE tags.
It makes them easier to read and preserves multiple spaces, wich can be critical for fixed width data.

Last edited by rbatte1; 05-11-2015 at 10:35 AM.. Reason: Added CODE tags and moderator comment.
# 4  
Old 05-11-2015
The following script seems to work with the two file formats you gave as samples. This was tested using the Korn shell, but it should work with any shell that recognizes basic Bourne shell syntax:
Code:
#!/bin/ksh
awk '
BEGIN {	mon["Jan"] = "01";	mon["Feb"] = "02";	mon["Mar"] = "03"
	mon["Apr"] = "04";	mon["May"] = "05";	mon["Jun"] = "06"
	mon["Jul"] = "07";	mon["Aug"] = "08";	mon["Sep"] = "09"
	mon["Oct"] = 10; 	mon["Nov"] = 11;	mon["Dec"] = 12
	FS = OFS = "|"
}
function dc(fn,		d, h, n) {
	n = split(" " $fn, d, /[ :]+/)
	h = (d[5] == 12 ? 0 : d[5]) + (d[8] == "AM" ? 0 : 12)
	$fn = sprintf("%s/%s/%s %02d.%s.%s", mon[d[2]], d[3], d[4], h, d[6], d[7])
}
NF == 7 {
	dc(3)
}
{	dc(NF)
}
1' "$1"

Save the above code in a file (I used tester) for this example and make it executable:
Code:
chmod +x tester

I strongly encourage you not to include spaces and quotes in your filenames. But, with the sample files you specified, the following commands seem to convert your files as requested:
Code:
./tester 'File1 '

produces the output:
Code:
Richard|Standard | Not asigned| Insured | New York |01/01/2015 23.00.00
John | Not Standard |  asigned| Insured | New York |01/01/2015 23.00.00
James | No| Assigned| No| New york |01/01/2015 23.00.00

And, the command:
Code:
./tester 'File 2"'

produces the output:
Code:
Richard|Standard |11/01/2014 22.00.00| Not asigned| Insured | New York |01/01/2015 23.00.00
John | Not Standard |01/05/2014 23.00.00|  asigned| Insured | New York |01/01/2015 23.00.00
James | No|09/01/2014 10.00.00| Assigned| No| New york |01/01/2015 23.00.00

 
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. SCO

Strange behaviour on Openserver 5.0.2 after 09/2015

Dear friends, i am having some Problems with a Sco Openserver in a Box (normally on VMWare, importing it on a Virtualbox does the same). When i boot up the system on xx/09/2015 i got fork failed - too many processes during startup. The programs which should run on the server, do not run. I... (67 Replies)
Discussion started by: ChipperEs
67 Replies

2. What is on Your Mind?

LinuxCon Seattle 2015

Only a little over a week until I head out to LinuxCon in Seattle. Anyone else attending this year? (0 Replies)
Discussion started by: Gallavin
0 Replies

3. Solaris

Leap second for year 2015

I hear the Leap second for 2015 will occur on June 30 at 23:59:60 according to the wild rumours from internet the expected impact ranges from crashing to hanging servers. Can anybody share their preparations what they have done for solaris servers? are there any patches to install or workaround?... (1 Reply)
Discussion started by: sparcguy
1 Replies

4. What is on Your Mind?

While Happy; do @ ;done < 2015

http://i62.tinypic.com/zt6a08.jpg (2 Replies)
Discussion started by: ongoto
2 Replies

5. Shell Programming and Scripting

How to convert date format such as 7/18/2015 to the number of month

How to convert date format such as 7/18/2015 to the number of month from requesting date 'date' in sh scripting ? Let say I have output in my log.txt -> 7/18/2015. How I convert it to the full number of month starting from 'date' till 7/18/2015 in shell scripting ? Thanks in advance. (1 Reply)
Discussion started by: amerabest
1 Replies

6. Shell Programming and Scripting

perl one-liner to get yesterday's date in format dd-MMM-yy (i.e. 01-JAN-12)

I have the following perl one-liner to get yesterday's date, but I would like it in the form of dd-MMM-yy (for example: 01-JAN-12). Can someone alter the below code so I get the format I want? Also, could someone also give me a line for dd-Mmm-yy (for example 01-Jan-12)? Code: YEST=`perl -w... (3 Replies)
Discussion started by: thibodc
3 Replies
Login or Register to Ask a Question