6

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

我将如何实现这一目标?

我已经尝试阅读 DATEPART 函数(编辑:这显然不起作用),但我只能从理论上让它返回 DD 或 MMM 部分,而不是同时返回它们。

编辑:添加了 oracle 标签。对不起。

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

4

8 回答 8

8

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

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

select to_char(your_date_column, 'mon-dd') from your_table
于 2013-09-17T14:08:17.683 回答
6

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

  select convert(varchar(5),getdate(),110)
于 2013-09-17T13:50:39.590 回答
5

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

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
  )
于 2013-09-17T13:55:52.333 回答
1

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

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

然后更容易排序和比较。

于 2013-09-17T13:59:31.847 回答
0

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

于 2018-10-25T09:59:04.343 回答
0

选择左(替换(转换(varchar(10),GETDATE()-1,3),'/',''),4)

这对你有用吗?

于 2016-05-03T11:37:23.560 回答
0

date_default_timezone_set("亚洲/加尔各答");

$m = date("m");//月份

$d = date("d");//天

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

只检查日期和月份并从数据库中返回今天、日期和月份

于 2019-07-24T19:31:43.850 回答
0

这应该可以解决问题

`select CONVERT(varchar(7),datetime_column,100) from your_table`
于 2016-01-19T06:43:05.950 回答