【问题标题】:How to match the time value? [closed]如何匹配时间价值? [关闭]
【发布时间】:2016-07-27 10:18:10
【问题描述】:

这是我的桌子。我需要匹配的值。我该怎么做?

我将LAST_ACCESS_TIME 保存为 php 中的time()

$time = time();

TS_SESSION数据:

USER_ID |HASH_VALUE                       |LAST_ACCESS_TIME 
--------|---------------------------------|-----------------
1       |31feefaba85e4e8dbb8ef9d5ae9bfda9 |1414754384       
3       |90ad8c64a2034b4a139ef595b3627d8d |1414769029       
2       |9f12581e0dfce0d7f40c0df77d1f1fd7 |1414782017       

尝试查询:

SELECT *
FROM TS_SESSION
where LAST_ACCESS_TIME BETWEEN timestamp '1456790400' AND timestamp '1459382400';

【问题讨论】:

  • 这只是一个例子。但这一个不起作用@Rene
  • @QuestionUser - 说真的……你是在 IT 部门工作,还是学生? “不管用”?这意味着什么?什么不工作?它怎么不工作?难道你不能比“不工作”做得更好吗?
  • 试试where LAST_ACCESS_TIME BETWEEN 1456790400 AND 1459382400
  • ... 或使用 SQL 函数将人类可读的日期转换为时间戳值。

标签: php sql oracle


【解决方案1】:

PHP time() 返回 unix 时间戳(从 01/01/1970 开始的秒数)。 因此,如果您需要将其转换为 Oracle 日期,您可能会找到类似这样的主题 https://dba.stackexchange.com/questions/16461/convert-a-unix-timestamp-to-a-datetime-in-a-view

所以这个简单的解决方案应该会有所帮助:

WITH ts_session AS 
(SELECT 
   1414754384 LAST_ACCESS_TIME 
 FROM DUAL)
SELECT 
  to_date('1970-01-01','YYYY-MM-DD')+
  numtodsinterval(LAST_ACCESS_TIME,'SECOND')) AS date_value
FROM ts_session

如果你需要格式化的字符串值,使用 to_char:

WITH ts_session AS 
(SELECT 
   1414754384 LAST_ACCESS_TIME 
 FROM DUAL)
SELECT 
  to_char(to_date('1970-01-01','YYYY-MM-DD')+
          numtodsinterval(LAST_ACCESS_TIME,'SECOND')),
          'MM/DD/YYYY HH24:MI:SS') AS char_value
FROM ts_session

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多