我有一个包含varchar列DateFrom的表,其格式为:
2014-02-22T08:08:00
我想要一个打印08:08的sql和一个打印22-02-2014的sql,但我似乎无法让时间功能起作用。
我想要做的是获取DateFrom中的所有条目并将其打印为时间(HH:MM) 与日期相同。
答案 0 :(得分:3)
虽然我认为字符串函数在这种情况下是更好的选择(比如@hakre回答)并且cpu代价更低,但您也可以使用STR_TO_DATE
,DATE
和{{1}来实现此目标功能。
TIME
答案 1 :(得分:1)
如果您不是在寻找date/time,而是在寻找字符串功能,可以在此处找到:
我认为对您的子字符串操作有用的一个字符串函数是SUBSTRING
。您可以根据varchar列告诉您希望子字符串从一个位置开始一段长度:
SUBSTRING(DateFrom FROM 1 FOR 8) AS DateName -- "2014-02-22"
SUBSTRING(DateFrom FROM 10 FOR 5) AS TimeName -- "08:08"
使用其他字符串函数按您需要的顺序连接部件。
或者,您可以cast your varchar string in that format to a datetime type然后根据需要进行格式化:
CAST(DateFrom AS datetime)
有关强制转换类型和可用日期时间函数的更多信息,请参阅Mysql手册:
SQL示例:
SET @DateFrom = '2014-02-22T08:08:00';
SELECT DATE(CAST(@DateFrom AS datetime)); -- '2014-02-22'
SELECT TIME(CAST(@DateFrom AS datetime)); -- '08:08:00'