基于记录中的日期的不同输出

时间:2014-06-05 19:01:18

标签: mysql sql

在MySQL中,我有一个包含以下模式的表:

CREATE TABLE Orders(
    `Order` int,
    `Date` DATE,
    `Amount` int);

如何获取所有记录,但是将一年以前的记录的日期显示为空白,否则显示一岁或一岁以下记录的日期?

3 个答案:

答案 0 :(得分:1)

对于MSSQL:

SELECT CASE WHEN DATEDIFF(day,[Date],GETDATE()) > 365 THEN NULL ELSE [Date] END AS [Date] FROM yourTable

对于MySQL:

SELECT `Order`, (CASE WHEN DATEDIFF(CURDATE(),Date) > 365 THEN NULL ELSE Date END) AS Date, Amount FROM yourTable;

对于Oracle:

SELECT CASE WHEN SYSDATE - yourDateColum > 365 THEN NULL ELSE yourDateColumn END FROM yourTable

答案 1 :(得分:1)

MySQL的语法是:

select `order`,
       (case when date >= date_add(now(), interval -365 day) as date
        end),
       amount

顺便说一下,给表或列保留字是不好的做法。 Order是保留字。通常,使它复数或像OrderId这样的东西可以解决问题。

答案 2 :(得分:0)

您希望在sql语句中使用dateadd()getdate()

像这样的东西

select Order, case when Date <= dateadd(yy, -1, getdate()) then null else Date end as [PastYearOnly], Amount from [OrderTable]

正如Arion所提到的......这是针对MS SQL的。如果你有一个不同的数据库系统,它可能会有点不同