cra*_*xxx 6 sql-server datetime type-conversion sql-server-2012
我正在尝试使用Excel将一些旧的SQL Server数据传输到SQL Server.Import/Export Data应用程序似乎自动将大多数数据列设置为NVARCHAR(255).我遇到的问题是,我的一个列应该是一个DATE类型,但其中的所有数据都是这样的18.08.2000 14:48:15.
所以,当我尝试使用此查询时:
SELECT CONVERT(Date, DATE_TIME, 113)
FROM someTable
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
消息9807,级别16,状态0,行1
输入字符串不遵循样式113,更改输入字符串或使用不同的样式.
None of the [styles] from CAST and CONVERT (Transact-SQL) are working in my case.
Any advise or help is greatly appreciated.
SOLVED:
UPDATE myTable
SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
ALTER TABLE myTable
ALTER COLUMN columnName SMALLDATETIME
Run Code Online (Sandbox Code Playgroud)
据我所知 - 风格没有.103(英国/法国)应该工作 - 不是吗?
DECLARE @input NVARCHAR(255)
SET @input = '18.08.2000 14:48:15'
SELECT CONVERT(DATETIME, @input, 103)
Run Code Online (Sandbox Code Playgroud)
给我输出:
2000-08-18 14:48:15.000
Run Code Online (Sandbox Code Playgroud)
这似乎很合理,没有?
如果您使用的是 SQL Server 2012,请尝试:
PARSE(Date AS datetime USING 'en-GB')
Run Code Online (Sandbox Code Playgroud)
或者如果这不起作用,请尝试:
PARSE(Date AS datetime USING 'Et-EE')
Run Code Online (Sandbox Code Playgroud)
爱沙尼亚文化特别使用“.”。作为日期分隔符 ( d.MM.yyyy H:mm:ss) 所以它应该可以工作。
(两者似乎在 SQL Fiddle 上都工作得很好)
所以,如果它对任何人有用,这就是将数据类型 NVARCHAR 更改为 DATETIME 的确切代码:
UPDATE myTable
SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
ALTER TABLE myTable
ALTER COLUMN columnName SMALLDATETIME
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66503 次 |
| 最近记录: |