2016-09-23 152 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' 
相關問題