如何在mysql中将字符串格式化为时间?

SELECT STR_TO_DATE('07:15:00','%H:%i:%s') as time
SELECT STR_TO_DATE('07:15:00','%T') as time

两者均产生NULL。但为什么?我认为这里的格式不正确,但是为什么我的时间也没有解析?

+------+
| time |
+------+
| NULL |
+------+
1 row in set,1 warning (0.01 sec)

此外,我只关心小时和分钟。但这也失败了:

SELECT STR_TO_DATE('07:15:00','%H:%i') as time

我的最终目标是创建一个视图,从另一个表中选择字符串并将其转换为TIME列:

CREATE VIEW
myview AS SELECT
SELECT STR_TO_DATE('07:15:00','%H:%i') as time
FROM `othertable`
jenny013 回答:如何在mysql中将字符串格式化为时间?

我想您正在使用版本5.7

如果SELECT @@GLOBAL.sql_mode值在字符串内返回,请查看NO_ZERO_DATE。 [Btw,NO_ZERO_IN_DATENO_ZERO_DATE参数已弃用]

如果您在NO_ZERO_DATE使用数据库,则SELECT STR_TO_DATE('07:15:00','%H:%i:%s')SELECT STR_TO_DATE('07:15:00','%T')返回null

如果有特权,请尝试通过SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';禁用该模式,或者可以编辑mysql.cnf文件并重新启动mysql。

,

Casttime的时间字符串:

SELECT cast('07:15:00' as time) as time 
,

如果无法禁用NO_ZERO_DATE,则可以使用以下变通方法,该变通方法仍会通过STR_TO_DATE来生成时间值。您可以将时间连接为一个随机日期,然后调用TIME()仅提取时间部分,例如

SELECT TIME(STR_TO_DATE(CONCAT('2019-01-01 ','07:15:00'),'%Y-%m-%d %H:%i:%s'))
--                             ^^ random date  ^^ your time literal
,
from itertools import chain
import random
import pandas as pd
import numpy as np

df_1 = pd.DataFrame({
        'ID' : list(chain.from_iterable([['A'] * 365,['B'] * 365,['C'] * 365])),'Date' : pd.date_range(start = '2018-01-01',end = '2018-12-31').tolist() + pd.date_range(start = '2018-01-01',end = '2018-12-31').tolist(),'Value' : np.random.randn(365 * 3)
        })

df_1.iloc[54,2] = 100
df_1.iloc[554,2] = 100
df_1.iloc[854,2] = 100

尝试此功能

本文链接:https://www.f2er.com/3160484.html

大家都在问