【问题标题】:String hh:mm to date.sql hh:mm (Android, Java) or String to Time (PHP)String hh:mm to date.sql hh:mm (Android, Java) 或 String to Time (PHP)
【发布时间】:2016-05-23 19:46:40
【问题描述】:

在我的 getRequest 中,我传递了两个字符串(minTime 和 maxTime),在 MySQL 中,我有两列 TIME(minTime 和 maxTime),我需要这两个值之间的所有寄存器。

因此,我需要将 minTime 和 maxTime 转换为 sql.date 并检索正确的寄存器(字符串无法正常工作)。 我尝试了很多事情都没有成功,例如:

String minTime_user = "10:45"

java.util.Date utilDate = new SimpleDateFormat("hh:mm").parse(minTime_user);

//output: Thu Jan 01 10:28:00 GMT-05:00 1970

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

//output: 1970-01-01

如果不可能,如何在 PHP 中将字符串转换为时间?我见过 strtotime 函数,但它返回自 1970 年以来的秒数,理想情况下,我更喜欢格式“hh:mm”以便能够进行比较而无需将表的值转换为 Unix。

【问题讨论】:

    标签: java php android time


    【解决方案1】:

    如您所说,如果您的时间存储在 TIME 列中,您可以直接在 MySQL 查询中比较时间:

    SELECT * FROM table WHERE column BETWEEN "10:45" AND "15:44";
    

    See here 用于演示。

    PHP 是一种松散类型的语言,因此您无需担心将其转换为任何内容;它作为字符串发送到 MySQL。

    编辑:the documentation 建议在查询中将值显式转换为 TIME,因此您最终会得到这样的结果:

    SELECT * FROM table WHERE column BETWEEN CAST("10:45" AS TIME) AND CAST("15:44" AS TIME);
    

    虽然我在没有强制转换的情况下使用这个函数从来没有遇到过任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2022-07-16
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2022-12-16
      相关资源
      最近更新 更多