我在連接各種類型的列上的兩個表時出現問題(出現錯誤轉換數據類型varchar
到numeric
到numeric
消息)。 接合邏輯必須是這樣的:格式之間的轉換
ON LC_YEAR (decimal(4,0), null)=DATE (datetime, null)
嘗試了各種轉換,但是失敗了。關於轉換應該如何的任何想法?
非常感謝,
Y.
我在連接各種類型的列上的兩個表時出現問題(出現錯誤轉換數據類型varchar
到numeric
到numeric
消息)。 接合邏輯必須是這樣的:格式之間的轉換
ON LC_YEAR (decimal(4,0), null)=DATE (datetime, null)
嘗試了各種轉換,但是失敗了。關於轉換應該如何的任何想法?
非常感謝,
Y.
LC_YEAR僅僅是一個包含列年(四位數),和日期具有以下格式:MM/DD/YYYY HH:MM:SS:MMM。我所要做的就是加入這兩列的表 - 也許實際上是從DATE列中提取年份(但年份(DATE)函數也不行)。事實上,消息和列格式之間存在矛盾,但是我看到了表格屬性中的格式。 謝謝!
對此的解決方案在於明確瞭解每個字段的實際數據類型。
您已經表示LC_YEAR是小數,而DATE
是日期時間;
但是你也已經指出DATE
的格式是mm/dd/yyyy hh:mm:ss:mmm如果數據類型是datetime那麼格式是不相關的,如果該字段是varchar則格式是相關的。所以可用的信息有點混亂。以下是轉換的一些想法。
`LC_YEAR` `DATE`
data Type data type
decimal datetime LC_YEAR = YEAR(`DATE`)
varchar datetime LC_YEAR = CAST(YEAR(`DATE`) AS VARCHAR)
varchar varchar LC_YEAR = CAST(YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm')) AS VARCHAR)
decimal varchar LC_YEAR = YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm'))
理想情況下,你不會需要加入包括數據類型轉換
爲什麼你會被比較,一年一個日期時間呢?這是沒有意義的。你應該提取年份的一部分?你的消息指出'DATE'實際上是一個'varchar',它不包含可以轉換爲日期的值嗎? – Turophile 2014-09-24 10:11:47
我不知道LC_YEAR()是什麼,但我懷疑你根本沒有提出正確的問題 - 格式之間的轉換是一個非常厚的主題。你偶然只是想確定一個日期是否屬於某一年? – 2014-09-24 10:18:23