简体   繁体   中英

Date in MON-YYYY format to Text format

How do I convert date format field to MON-YYYY format.

I have date 12-06-2014 and I want to compare it with JUN-2014.

Here is a link that explains everything about date format: Date Format

Your solution is probably the following (MySQL version):

UPPER(DATE_FORMAT(yourDate, '%b-%Y'))

And for SQL Server:

UPPER(SUBSTRING(DATENAME(MONTH, yourDate), 1, 3) + '-' + CAST(DATEPART(YEAR, yourDate) AS VARCHAR(4)))

Hope this will help you

SQL supports a number of different date formats, but does not support non-numeric based date formats. I would strongly suggest finding a method which uses one of these formats as suggested the Microsoft SQL documentation .

Alternatively, if it is absolutely necessary that you use this format, then the following code can change any date format into the format you have requested.

declare @date date = '2014-01-01'
select 
case when DATEPART(mm,@date) = 1 then 'JAN'
when DATEPART(mm,@date) = 2 then 'FEB'
when DATEPART(mm,@date) = 3 then 'MAR'
when DATEPART(mm,@date) = 4 then 'APR'
when DATEPART(mm,@date) = 5 then 'MAY'
when DATEPART(mm,@date) = 6 then 'JUN'
when DATEPART(mm,@date) = 7 then 'JUL'
when DATEPART(mm,@date) = 8 then 'AUG'
when DATEPART(mm,@date) = 9 then 'SEP'
when DATEPART(mm,@date) = 10 then 'OCT'
when DATEPART(mm,@date) = 11 then 'NOV'
when DATEPART(mm,@date) = 12 then 'DEC' end 
+ '-' 
+ CONVERT(char(4),DATEPART(yy,@date)) as new_format

You could use something like the following to format the date and compare ( SQL Fiddle ):

SELECT * 
FROM
(
  SELECT 
    CONCAT(
      CONVERT(CHAR(3), CONVERT(DATE, MyDateField, 105), 0), 
      '-',
      DATEPART(YYYY, CONVERT(DATE, MyDateField, 105))
    ) AS DF
  FROM MyTable
) m
WHERE m.DF = 'JUN-2014';

You can use below for convert date formate.

select left(datename(mm,[Date]),3)
+'-' + cast( DATEPART(YYYY,[date]) as nvarchar(50))
from ArtistCalendar

You can use the DATENAME() function to get the name for a given month, which can be abbreviated like so:

SELECT LEFT(DATENAME(mm, GETDATE()),3)  -- Output: 'Sep'

You can append the year using:

SELECT YEAR(GETDATE())

This should have to be converted to a string value to enable comparison with your supplied value. So you can do this:

SELECT LEFT(DATENAME(mm, GETDATE()),3) + '-' 
     + CAST(YEAR(GETDATE()) AS NVARCHAR(4)) AS InputDate  -- Output: Sep-2014

To check equality of a supplied value, eg Sep-2014 :

SELECT LEFT(DATENAME(mm, GETDATE()),3) + '-' 
     + CAST(YEAR(GETDATE()) AS NVARCHAR(4)) AS InputDate,
     GETDATE() as FullDate,
     CASE WHEN LEFT(DATENAME(mm, getdate()),3) + '-' 
             + CAST(YEAR(GETDATE()) as nvarchar(4)) = 'SEP-2014' 
          THEN 'True' 
          ELSE 'False' 
    END as Equality

Ouptut

InputDate   FullDate                 Equality
----------------------------------------------
Sep-2014    2014-09-15 14:35:57.427  True

To use with your table:

DECLARE @compareDate AS NVARCHAR(10)
SET @compareDate = 'Jan-2014'  -- set this

SELECT LEFT(DATENAME(mm, [YOUR_COL]),3) + '-' 
     + CAST(YEAR([YOUR_COL]) AS NVARCHAR(4)) AS InputDate,
     [YOUR_COL]as FullDate,
     CASE WHEN LEFT(DATENAME(mm, [YOUR_COL]),3) + '-' 
             + CAST(YEAR([YOUR_COL]) as nvarchar(4)) = @compareDate
          THEN 'True' 
          ELSE 'False' 
    END as Equality
From [YOUR_TABLE]

Just replace [YOUR_COL] with your date column and [YOUR_TABLE] with the table that holds the data column.

SQL Server语法为:

UPPER(FORMAT(yourDate, 'MMM-yyyy'))

In Oracle SQL You can do something like this

TO_CHAR(column_name, 'MON-YYYY')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM