MON-YYYY格式的日期格式为文本格式

时间:2014-09-15 12:38:00

标签: sql sql-server date

如何将日期格式字段转换为MON-YYYY格式。

我的日期是12-06-2014,我想将它与JUN-2014进行比较。

6 个答案:

答案 0 :(得分:2)

这是一个解释日期格式的所有内容的链接: Date Format

您的解决方案可能如下(MySQL版本):

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

对于SQL Server:

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

希望这会对你有所帮助

答案 1 :(得分:0)

SQL支持许多不同的日期格式,但不支持基于非数字的日期格式。我强烈建议找到一种方法,使用Microsoft SQL documentation建议的其中一种格式。

或者,如果您绝对有必要使用此格式,则以下代码可以将任何日期格式更改为您请求的格式。

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

答案 2 :(得分:0)

您可以使用以下内容格式化日期并进行比较(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';

答案 3 :(得分:0)

您可以在下面使用转换日期格式化。

选择左侧(日期名称(mm,[日期]),3)
 +' - '+施放(DATEPART(YYYY,[date])as nvarchar(50))
 来自ArtistCalendar

答案 4 :(得分:0)

您可以使用DATENAME()函数获取给定月份的名称,可以缩写为:

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

您可以使用以下方式追加年份:

SELECT YEAR(GETDATE())

这必须转换为字符串值,以便与您提供的值进行比较。所以你可以这样做:

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

检查所提供值的相等性,例如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

与您的桌子一起使用

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]

只需将[YOUR_COL]替换为日期列,将[YOUR_TABLE]替换为包含数据列的表。

答案 5 :(得分:0)

SQL Server语法为:

navigate https://angular-z3shbr.stackblitz.io/
setValue           type=text some text

execAndWait document.getElementsByTagName('input')[0].dispatchEvent(new Event("input"));

clickAndWait    innerText=Next