从日期字段中仅获取日期和月份

时间:2013-09-17 13:48:06

标签: sql oracle

我有一组日期,格式为DD-MMM-YYYY。我需要能够仅使用日期的DD-MMM部分来比较日期,因为这一年并不重要。

我将如何实现这一目标?

我已经尝试过阅读DATEPART功能(编辑:显然不会工作)但我理论上只能返回DD或MMM部分,而不是同时返回它们。

编辑:添加了oracle标签。遗憾。

日期字段示例:01-MAR-1994

8 个答案:

答案 0 :(得分:6)

如果您的列属于DATE类型,那么它没有格式。

如果我理解正确,那么您只想查看mon-dd部分,因此您需要使用TO_CHAR功能对其进行转换,
即:

select to_char(your_date_column, 'mon-dd') from your_table

答案 1 :(得分:5)

使用以下格式转换日期,它只会是月份和日期部分。您必须将getdate()替换为日期字段。:

  select convert(varchar(5),getdate(),110)

答案 2 :(得分:2)

假设您尝试使用DATEPART时使用的是SQL Server或Oracle,则可以使用DAY()MONTH()函数获取日期和月份。再次假设您要比较的日期在两个不同的表中,它看起来类似于:

SELECT MONTH(t1.date), DAY(t2.date)
FROM table AS t1
INNER JOIN table2 AS t2
ON t1.key = t2.key
WHERE MONTH(t1.date) = MONTH(t2.date)
AND DAY(t1.date) = DAY(t2.date)

编辑:如果您只是比较同一个表中的行,则只需要一个非常简单的查询。

SQLFiddle

select id, TO_CHAR(most_recent, 'mon-dd')
from (
    select id, MAX(date1) AS most_recent
    from table1
    group by id
  )

答案 3 :(得分:1)

您还可以将月份和日期合并为一个整数:

EXTRACT(MONTH FROM datecol) * 100 + EXTRACT(DAY FROM datecol) AS MonthDay

然后更容易排序和比较。

答案 4 :(得分:0)

这应该可以解决问题

`select CONVERT(varchar(7),datetime_column,100) from your_table`

答案 5 :(得分:0)

SELECT LEFT(REPLACE(CONVERT(varchar(10),GETDATE() - 1,3),' /',''),4)

为你做这项工作吗?

答案 6 :(得分:0)

date_default_timezone_set(“亚洲/加尔各答”);

$ m = date(“ m”); //月

$ d = date(“ d”); //天

$ sql =“ SELECT * FROM contactdata WHERE MONTH(date)='$ m'AND DAY(date)='$ d'”;

仅检查日期和月份,并从数据库中返回日期,日期和日期

答案 7 :(得分:-1)

select FORMAT(yourcoulmn_name, 'dd/MM') from table