如何使用Mysql语句

时间:2015-12-14 07:12:17

标签: php mysql sql

在我的SQL数据库中,我存储带有时间戳的日期,例如像这样(2015-09-21 18:02:14)我要求上次使用SQL语句获取最后一次(18:02:14)是白天或晚上

如果您有其他想法,请与我分享。如果它符合我的要求,我想使用它。

在我的表中,如果有20个记录相同的日期,那么只获得白天记录如何创建像这样的查询

4 个答案:

答案 0 :(得分:4)

如果当天定义从早上6点到下午6点,那么

SELECT column
FROM  `tablename` 
WHERE HOUR( column ) 
BETWEEN 6 
AND 18;

答案 1 :(得分:1)

首先,您应该定义什么是白天和黑夜。然后,您可以使用DATE_FORMAT函数将datetime字段转换为HH:MI字符串。

例如,您可以从18:00到8:00(夜晚)选择记录

select * from t 
WHERE DATE_FORMAT(dt, '%H:%i')>='18:00'
      or  DATE_FORMAT(dt, '%H:%i')<'09:00'

SQLFiddle demo

答案 2 :(得分:1)

您应该有另一个表(或其他数据源)提供日落和日出时间,然后将您自己的日期时间与该来源进行比较。您可以在添加到表之前(并创建另一个名为isDay的列)或从表中进行SELECTing时进行比较。

注意:

  1. 日落/日出时间取决于您的地理位置。

  2. 有API可以提供该信息

  3. 有些算法可以帮助计算该信息
  4. 示例:

    1. http://sunrise-sunset.org/api
    2. http://api.sunrise-sunset.org/json?lat=36.7201600&lng=-4.4203400&date=2015-12-13
    3. I need a sunrise/sunset webservice api

答案 3 :(得分:0)

-- from sql server 2008 until now
SELECT 
    CASE WHEN DATEPART(HOUR, GETDATE()) < 18 THEN 'DAY'
        ELSE 'NIGHT'
    END

-- from sql server 2012 until now, if you don't like CASE
SELECT IIF(DATEPART(HOUR, GETDATE()) < 18, 'DAY', 'NIGHT')

18 = 6PM 您可以用DATETIME列替换GETDATE()

SELECT 
    CASE WHEN DATEPART(HOUR, 'yourDateTimeColumn') < 18 THEN 'DAY'
        ELSE 'NIGHT'
    END AS PeriodOfDay
FROM 'yourTable'