Php sql查询使用特定的H:i:s将日期转换为日期时间

Php sql查询使用特定的H:i:s将日期转换为日期时间,php,sql,date,Php,Sql,Date,这是我的数据库表结构 CREATE TABLE IF NOT EXISTS `db_table` ( `start_date` date NOT NULL COMMENT 'Year-Month-Day', `username` varchar(15) NOT NULL, PRIMARY KEY (`start_date`,`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; PHP SQL查询 SELECT username WH

这是我的数据库表结构

CREATE TABLE IF NOT EXISTS `db_table` (
  `start_date` date NOT NULL COMMENT 'Year-Month-Day',
  `username` varchar(15) NOT NULL,
  PRIMARY KEY (`start_date`,`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
PHP

SQL查询

SELECT username WHERE UNIX_TIMESTAMP(start_date) >= '".strtotime($q_date)."'
如您所见,..开始日期列的类型是类似于“年-月-日”的日期,我需要使用类似于datetime(开始日期$t时间)的UNIX时间戳,因此它将类似于UNIX时间戳(2013-04-24 05:42:37)

可能吗?有什么想法吗


谢谢。

您没有提到数据库,但我认为它是mysql

您说“如您所见,..开始日期列的类型是类似于“年-月-日”的日期-但开始日期是mysql日期格式的日期。转换是选择数据的问题。当然,您可以将开始日期设计为varchar(string),然后您就可以输入任何格式的日期。但在这之前,您需要将selects中的日期转换为unix时间戳。与unix时间戳之间的转换示例

select now(), unix_timestamp(now()),  from_unixtime(unix_timestamp(now())),
       unix_timestamp('2013-07-09 09:04:30'), from_unixtime(1373353795)
给你

2013-07-09 09:10:15, 1373353815, 2013-07-09 09:10:15, 
1373353470, 2013-07-09 09:09:55
我不熟悉php,也不知道strotime的格式是什么,但应该返回与now()相同的返回值(我可以使用其他语言环境,您的格式可以不同,但您始终可以根据需要设置时间戳的格式)

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');

我的附加功能是执行一次转换并始终转换为时间戳-更快:

SELECT username WHERE start_date >= some_php_conversion_which_produces_unix_timestamp.

将日期类型转换为DATETIME实际上是不可能的,因为如果DB表的列为DATE,那么当您在表中插入数据时,它将不会向DB插入时间。因此,使用任何SQL函数都无法找到实际信息。您将得到错误的输出


因此,为了获得正确的输出,如果可能的话,将字段类型更改为DATETIME。我认为这是最好的解决方案。

选择用户名,其中start\u date>='“$q\u date.”
SELECT username WHERE start_date >= some_php_conversion_which_produces_unix_timestamp.