我有一组日期,格式为DD-MMM-YYYY。我需要能够仅使用日期的DD-MMM部分来比较日期,因为这一年并不重要。
我将如何实现这一目标?
我已经尝试过阅读DATEPART功能(编辑:显然不会工作)但我理论上只能返回DD或MMM部分,而不是同时返回它们。
编辑:添加了oracle标签。遗憾。
日期字段示例:01-MAR-1994
答案 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