【问题标题】:Get time from a varchar(100) type with (HH:MM AM/PM) format从具有 (HH:MM AM/PM) 格式的 varchar(100) 类型获取时间
【发布时间】:2013-11-12 12:29:27
【问题描述】:

如何将字符串(“RD/OT 07:30”)转换为时间。我只知道如何将(“07:30 AM”)转换为时间。下面的这段代码给了我一个空白数据。

 $id = strtoupper($_POST['id']);
    $query = mysql_query("SELECT STR_TO_DATE('RD/OT 07:30','%x %h:%i')  as ScheduleIn  FROM tbl_uploadedschedule") or die(mysql_error());
    $res =   mysql_fetch_assoc($query);
    $r = $res['ScheduleIn'];
    return($r);

【问题讨论】:

  • 您是否考虑过添加一个临时表列并将 varchar 日期转换为日期/时间戳记录,从而一起解决问题?
  • @John - "7:30 AM", "RD/OT 7:30" - 这是来自上传的 .csv 文件/excel 文件的数据格式。可以像您建议的那样将其转换为日期/时间戳格式吗?
  • 遇到什么语法错误?
  • 要是有这东西的手册就好了
  • 这是错误:“检查与您的 MYSQL 服务器版本相对应的手册以获取正确的语法,以便在 'varchar(100), loginTime(),108),1,5) 附近用作时间FROM tbl_cmsloginout WHERE campaign='$id' && agentName='ADARAYAN, DIANNE"

标签: php mysql time fetch typeconverter


【解决方案1】:

您可以使用STR_TO_DATE(str,format)函数转换时间格式:

SELECT STR_TO_DATE(`field_name`, '%h:%i %p')
FROM `table_name`
# this will convert '7:30 AM' to '07:30:00'

如果输出的是整个DATETIME格式,可以使用TIME(expr)函数只获取TIME部分。

Demo不知道为什么 sqlfiddle 忽略了 TIME() 函数;它在 localhost 上工作)。

【讨论】:

  • 我试过这段代码,但这只会给我一个空白数据。谢谢。
  • "$id = strtoupper($_POST['id']); $upload =""; $query = mysql_query("SELECT TIME(STR_TO_DATE('loginTime', '%h:%i %p')) 作为 Time FROM tbl_cmsloginout WHERE campaign='$id' && agentName='ADARAYAN, DIANNE'") 或 die(mysql_error());
  • @AlgieRosario:你不能使用字段名作为字符串,去掉单引号。
【解决方案2】:

感谢您的回答,现在我得到了 STR_TO_DATE(),代码:

STR_TO_DATE('loginTime', '%h:%i %p')  as Cast 

是错误的,因为它将“loginTime”读取为字符串,这是一种非法的时间格式。正确的语法是:

 STR_TO_DATE(loginTime, '%h:%i %p')  as Cast 

列名中没有单引号。万岁!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2021-02-17
    • 2015-07-04
    • 2013-09-09
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多