sqlsql-serverdatetimestored-proceduressql-convert

Custom Date/Time formatting in SQL Server


I am trying to write a stored procedure which selects columns from a table and adds 2 extra columns to the ResultSet. These 2 extra columns are the result of conversions on a field in the table which is a Datetime field.

The Datetime format field has the following format 'YYYY-MM-DD HH:MM:SS.S'

The 2 additional fields which should be in the following format:

  1. DDMMM
  2. HHMMT, where T is 'A' for a.m. and 'P' for p.m.

Example: If the data in the field was '2008-10-12 13:19:12.0' then the extracted fields should contain:

  1. 12OCT
  2. 0119P

I have tried using CONVERT string formats, but none of the formats match the output I want to get. I am thinking along the lines of extracting the field data via CONVERT and then using REPLACE, but I surely need some help here, as I am no sure.

Could anyone well versed in stored procedures help me out here? Thanks!


Solution

  • If dt is your datetime column, then

    For 1:

    SUBSTRING(CONVERT(varchar, dt, 13), 1, 2)
        + UPPER(SUBSTRING(CONVERT(varchar, dt, 13), 4, 3))
    

    For 2:

    SUBSTRING(CONVERT(varchar, dt, 100), 13, 2)
        + SUBSTRING(CONVERT(varchar, dt, 100), 16, 3)