我目前有一个mySQL数据库,其中包含两个TEXT字段:Date
和Time
。它们的格式分别为"dd/mm/yyyy"one_answers"0:00",例如"11/08/2020"和19:12。我想创建第三个名为Timestamp
的字段(类型为INT(,并将两个原始字段转换为这个时间戳字段,并删除日期/时间文本字段。
我已经做了一些关于使用UNIX_TIMESTAMP((和STR_to_DATE((的研究,但我似乎无法使其工作,格式似乎不对。
我如何在SQL中实现这一点,并将表示日期和时间的两个字符串字段转换为第三个字段来替换它们,这两个字段只存储unix时间戳?
这是我迄今为止最好的尝试。。
SELECT UNIX_TIMESTAMP(STR_TO_DATE(CONCAT(`InfractionDate`, " ", `InfractionTime`), '%d %M %Y %h:%i%p')) FROM `playerinfractions`
该表称为playerinfractions
,日期/时间存储在TEXT字段InfractionDate
和InfractionTime
中。
非常感谢!
函数STR_TO_DATE()
中使用的格式模式错误
试试这个:
SELECT
UNIX_TIMESTAMP(
STR_TO_DATE(
CONCAT(`InfractionDate`, ' ', `InfractionTime`),
'%d/%m/%Y %H:%i')
)
FROM `playerinfractions`
您需要告诉STR_to_DATE您的日期和时间的正确格式,您建议它是'%d/%m/%Y %H:%i'
SELECT UNIX_TIMESTAMP(
STR_TO_DATE(
CONCAT('10/08/2020', ' ', '12:20'), '%d/%m/%Y %H:%i' )
)
)
FROM `playerinfractions`
所以使用你的列
SELECT UNIX_TIMESTAMP(
STR_TO_DATE(
CONCAT(`InfractionDate`, ' ', `InfractionTime`), '%d/%m/%Y %H:%i' )
)
)
FROM `playerinfractions`
我尝试以下面的格式将字符串传递给同一个函数,结果成功了。你也可以分享你的格式来进一步检查。
select UNIX_TIMESTAMP(STR_TO_DATE(CONCAT('8/12/2020',' ', '12:01:49' ),'%m/%d/%Y %h:%i:%s'))