4

编辑:解决方案在参考帖子的解决方案中。我不小心忽略了 DATETIME--> Varchar(10)

`CONVERT 的语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )`

我知道这篇文章

SQL Server (2005, 2000, 7.0) 没有任何灵活甚至不灵活的方式来获取字符串格式的任意结构化日期时间并将其转换为日期时间数据类型。

所以我正在寻找一种只解决这种特定字符串格式的解决方案。

假设我在 sql server 中有一个带有字段的表inputDatedatetime格式

以下代码无需转换/转换即可工作

SELECT inputDate
FROM   some_table
WHERE  inputDate > '01/24/2013' 

但它不会为

SELECT inputDate
FROM   some_table
WHERE  inputDate > '24/01/2013'

投掷The conversion of a varchar data type to a datetime data type resulted in an out-of-range value

然后我尝试了

SELECT inputDate
FROM   some_table
WHERE  inputDate > CONVERT(VARCHAR(10), '24/01/2013', 103)

抛出同样的错误

有没有办法将 dd/mm/yyyy 中的字符串转换为SQL SERVER 中的日期时间格式?还是唯一的方法,正确的方法是在别处进行消毒?

4

4 回答 4

8

你试过用DATETIME而不是VARCHAR(10)

WHERE inputDate > CONVERT(DATETIME, '24/01/2013', 103) 
于 2013-01-24T03:06:16.780 回答
0

尝试使用这篇文章中的信息:ISO 8601

我成功地做到了以下几点:

select convert(datetime,convert(char(23),'20140125' ,127),103) as MyDate

得到这个:2014-01-25 00:00:00.000

于 2014-01-05T09:21:05.423 回答
-1

使用ISO 8601日期格式 YYYY-MM-DDT00:00:00。它将在任何语言环境中隐式转换为日期时间

于 2013-01-24T03:06:24.083 回答
-2

尝试将 VARCHAR(10) 的长度增加到 VARCHAR(14) ,例如:

select inputDate from Table 
where inputDate > convert(varchar(14), '24/01/2013', 103)
于 2013-01-24T03:13:40.403 回答