我有一组格式为 DD-MMM-YYYY 的日期。我需要能够通过仅使用日期的 DD-MMM 部分来比较日期,因为年份并不重要。
我将如何实现这一目标?
我已经尝试阅读 DATEPART 函数(编辑:这显然不起作用),但我只能从理论上让它返回 DD 或 MMM 部分,而不是同时返回它们。
编辑:添加了 oracle 标签。对不起。
日期字段示例:01-MAR-1994
如果您的列是类型,DATE
那么它没有格式。
如果我理解正确,那么您只想查看该mon-dd
部分,因此您需要使用TO_CHAR
函数对其进行转换,
即:
select to_char(your_date_column, 'mon-dd') from your_table
使用以下格式转换您的日期,它将只有月份和日期部分。您必须将 getdate() 替换为您的日期字段。:
select convert(varchar(5),getdate(),110)
假设您在尝试使用 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
)
您还可以将月份和日期组合成一个整数:
EXTRACT(MONTH FROM datecol) * 100 + EXTRACT(DAY FROM datecol) AS MonthDay
然后更容易排序和比较。
select FORMAT(yourcoulmn_name, 'dd/MM') from table
选择左(替换(转换(varchar(10),GETDATE()-1,3),'/',''),4)
这对你有用吗?
date_default_timezone_set("亚洲/加尔各答");
$m = date("m");//月份
$d = date("d");//天
$sql = "SELECT * FROM contactdata WHERE MONTH(date) = '$m' AND DAY(date) = '$d' ";
只检查日期和月份并从数据库中返回今天、日期和月份
这应该可以解决问题
`select CONVERT(varchar(7),datetime_column,100) from your_table`