按时间排序使用当前时间?

问题描述:

我还没有关于DBA的知识。 我是一名ios开发人员,我对DBA有一个问题。按时间排序使用当前时间?

`SELECT StartDate,Subject 
FROM tbl_Calendar 
WHERE StartDate BETWEEN ` date('2017-04-25') AND ('2017-04-26') 

This is My Table Data

例如:1

,如果目前的时间是13:30:00

给我这个顺序3,4,5,2,1

例如:2

如果目前的时间是12:35:00

给我这个顺序2,3,4,5,1

例如:3

,如果目前的时间11: 35:00

给我这个顺序1,2,3,4,5

这是我的表sql:

CREATE TABLE `tbl_Calendar` (
    `StartDate` datetime, 
    `Subject` ntext 
); 

任何帮助将不胜感激。

+0

这种排序背后的原因是什么?绝对差距? –

+0

这是一个事件sedule,所以如果当前时间是12:30,这意味着12:00正在进行中(打印第一),下一个作品是1:00(打印第二),下一个或下一个和最后一个作品完成 –

+1

如果你不喜欢没有指定一个ORDER BY子句,这个排序实际上是未定义的(无论它看起来多么可重复)。如果您想要特定订单,请添加适当的'ORDER BY'。 – TripeHound

你可以在你的ORDER BY使用CASE这样的:

SELECT 
     StartDate, Subject 
    FROM 
     tbl_Calendar 
    WHERE 
     StartDate BETWEEN DATE ('2017-04-25') AND ('2017-04-26') 
    ORDER BY 
     CASE WHEN ((StartDate < DATETIME('now', 'localtime')) AND (StartDate <> (SELECT StartDate FROM tbl_Calendar WHERE StartDate < DATETIME ('now', 'localtime') ORDER BY StartDate desc limit 1))) THEN DATETIME (StartDate, '+1 day') ELSE StartDate END; 

CASE中的子查询将忽略正在运行的事件记录并仅更改以前的记录。

+0

好的谢谢你让我支票 –

+0

我检查这对我很好,因为。目前我为此编写循环并打印此文件:D。当我的客户批准这一点时,我批准你的答案。 –

+0

@HarshilKotecha没问题。很高兴帮助你。 –

您可以通过表达ORDER BY所以使用CASE,日期时间函数只是包装你的逻辑在简单的表达,你是好去

+0

请给出查询 –

+0

是你附近的答案,但我没有关于SQL的知识,所以不能理解你的理论是写但我不想查询。 (顺便谢谢) –