2016-09-23 52 views
0

我如何将数据库中的数据类型为varchar(30)的数据类型转换为datetime,我有这个示例11:45:24 09/23/2016,假设必须将其转换为​​3210。我的专栏名称是due_by。我有搜索,并尝试了不同的建议,但似乎没有人查询成功或正确。我在MySQL工作台上运行它。将varchar数据类型转换为MySQL中的datetime

示例代码

SELECT convert(varchar(30),'yyyy-mm-dd hh:mm:ss', 120) 
FROM csbrms.user_request; 

enter image description here

只是希望我的due_by格式等于现在()列的格式。

回答

0

我认为我们不能直接将它转换成现在的格式,因为它可能在Sql Server中,所以我试过这个,如果你确定的话,请看一看。

的MySQL:

SELECT 
CONCAT(STR_TO_DATE(
     RIGHT(TRIM(due_by), 10), '%m/%d/%Y'), ' ', 
     STR_TO_DATE(due_by,'%h:%i:%s')) nowFormat 
FROM csbrms.user_request; 

SQL服务器:

SELECT CONVERT(DATETIME, '11:45:24 09/23/2016', 120) 
0

使用以下命令:

DECLARE @Date varchar(8) 
set @Date='10102016' 
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2)) 

OUTPUT:

----------------------- 
2016-10-10 00:00:00.000 

(1 row(s) affected) 

使用下面的MySQL:

SELECT STR_TO_DATE('11:44:00 10/10/2016', '%h:%m:%s %m/%d/%Y') 
+0

他希望在MySQL中使用此工作台并使用mysql工作台;) – Susang

+0

确定。得到它了。我会更新。 –

0
STR_TO_DATE(str,format) 

这是DATE_FORMAT()函数的逆。它采用字符串str和格式字符串格式。如果格式字符串同时包含日期和时间部分,则STR_TO_DATE()返回DATETIME值;如果字符串仅包含日期或时间部分,则返回DATE或TIME值。如果从str中提取的日期,时间或日期时间值不合法,则STR_TO_DATE()返回NULL并产生警告。

服务器扫描str尝试匹配格式。格式字符串可以包含以%开头的文字字符和格式说明符。格式中的文字字符必须在字符串中匹配。格式中的格式说明符必须与str中的日期或时间部分匹配。对于格式中可以使用的说明符,请参阅DATE_FORMAT()函数说明。

mysql> SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y'); 

     -> '2013-05-01' 

mysql> SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y'); 

     -> '2013-05-01' 

扫描从str开头开始,如果发现格式不匹配,则失败。 str结尾的额外字符被忽略。

mysql> SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s'); 
     -> '09:30:17' 
mysql> SELECT STR_TO_DATE('a09:30:17','%h:%i:%s'); 
     -> NULL 
mysql> SELECT STR_TO_DATE('09:30:17a','%h:%i:%s'); 
     -> '09:30:17' 

未指定的日期或时间部分具有为0的值,所以在STR未完全指定的值产生具有一些结果或所有部分设置为0:

mysql> SELECT STR_TO_DATE('abc','abc'); 

     -> '0000-00-00' 

mysql> SELECT STR_TO_DATE('9','%m'); 

     -> '0000-09-00' 

mysql> SELECT STR_TO_DATE('9','%s'); 

     -> '00:00:09' 

范围上的日期的各个部分检查值如第11.3.1节“DATE,DATETIME和TIMESTAMP类型”中所述。这意味着,例如,除非SQL模式被设置为禁止这些值,否则允许“零”日期或部分值为0的日期。

mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y'); 

     -> '0000-00-00' 

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y'); 

     -> '2004-04-31' 

如果NO_ZERO_DATE或NO_ZERO_IN_DATE SQL模式被激活,零日期或日期的一部分是不允许的。在这种情况下,STR_TO_DATE()返回NULL并生成警告。

注: -

您不能使用格式“%X%V”一年为期一周的字符串转换为日期,因为一年一周的组合并不唯一,如果每周确定一个年份和月份跨过一个月的边界。要将年份转换为日期,您还应指定星期几:

mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W'); 

     -> '2004-10-18' 
相关问题