Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
截至sql server日期的字符串(dd/mm/yyyy)_Sql_Sql Server_Tsql - Fatal编程技术网

截至sql server日期的字符串(dd/mm/yyyy)

截至sql server日期的字符串(dd/mm/yyyy),sql,sql-server,tsql,Sql,Sql Server,Tsql,编辑: 解决方案在参考文章的解决方案中。我不小心忽略了DATETIME-->Varchar(10) `转换的语法: CONVERT ( data_type [ ( length ) ] , expression [ , style ] )` 我知道这个职位 SQL Server(2005、2000、7.0)没有任何灵活甚至非灵活的方法来获取任意结构的字符串格式的datetime并将其转换为datetime数据类型 因此,我正在寻找一个解决方案,只解决这个特殊的字符串格式 假设我在sql ser

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

`转换的语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )`
我知道这个职位

SQL Server(2005、2000、7.0)没有任何灵活甚至非灵活的方法来获取任意结构的字符串格式的datetime并将其转换为datetime数据类型

因此,我正在寻找一个解决方案,只解决这个特殊的字符串格式

假设我在sql server中有一个表,其字段为:
inputDate
,格式为
datetime

以下代码在没有转换/强制转换的情况下工作

SELECT inputDate
FROM   some_table
WHERE  inputDate > '01/24/2013' 
但这对我来说是行不通的

SELECT inputDate
FROM   some_table
WHERE  inputDate > '24/01/2013'
抛出
将varchar数据类型转换为datetime数据类型会导致值超出范围

然后我试着

SELECT inputDate
FROM   some_table
WHERE  inputDate > CONVERT(VARCHAR(10), '24/01/2013', 103)
抛出同样的错误


是否有方法将dd/mm/yyyy中的字符串转换为SQL SERVER中的日期时间格式?或者唯一的方法,正确的方法是在其他地方进行santization?

您是否尝试过使用
DATETIME
而不是
VARCHAR(10)


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

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


尝试使用本文中的信息:

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

select convert(datetime,convert(char(23),'20140125' ,127),103) as MyDate
要获得此信息:
2014-01-25 00:00:00.000

谢谢,这意味着我必须在预处理中将我的sql日期字符串重新格式化为yyyy mm dd?不,这不是真的!尝试
SET语言法语;选择转换(日期时间,'2012-12-31')检查此MSDN文章:。(搜索ISO 8601)唉,你试过我贴的东西了吗?您是否注意到,在文章中,ISO 8601格式包括时间和分隔符
T
?如果您尝试了我发布的内容,您就会明白为什么我不同意YYYY-MM-DD在任何语言环境中都是安全的,尽管您可能已经从MSDN文章中进行了解释。为什么不建议使用
YYYYMMDD
而不是更复杂的字符串?与YYYY-MM-DD不同,YYYYMMDD是通用安全的。问题是您需要决定一种格式还是另一种格式。您希望SQL Server如何知道
07/08/2012
是7月8日还是8月7日?@AaronBertrand,我想是使用convert函数中的第3个图形。JW。解决了这个问题。我指的是你提到的上一篇文章,他们似乎想让SQL Server知道是自动使用101还是103。字符串从何而来,如何发送到服务器?我问这个问题是因为我想到了一些可以巧妙地避开这个漏洞问题的选项。@JoelCoehoorn从Excel中,我的解决方案是使用格式(日期,“mm/dd/yyyy”),然后使用ADODB.connectionP.S。解决方案在参考文章的解决方案中。我不小心忽略了DATETIME-->Varchar(10)
select inputDate from Table 
where inputDate > convert(varchar(14), '24/01/2013', 103)
select convert(datetime,convert(char(23),'20140125' ,127),103) as MyDate