Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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日期时间查询_Sql_Sql Server 2008_Datetime - Fatal编程技术网

sql日期时间查询

sql日期时间查询,sql,sql-server-2008,datetime,Sql,Sql Server 2008,Datetime,我有一些表具有这种类型的日期时间:2010-09-16 00:32:41.960'CreatedDate列 我需要执行一个查询。。。其中[CreatedDate]>='2010-09-16 00:32:41.960' 但那只会让我 将varchar数据类型转换为datetime数据类型导致值超出范围。 正确的语法是什么,我上次使用SQL已经有一段时间了。 提前感谢。试试: where [CreatedDate] >= CONVERT(datetime,'2010-09-16 00:32:4

我有一些表具有这种类型的日期时间:
2010-09-16 00:32:41.960'
CreatedDate列

我需要执行一个查询。。。其中[CreatedDate]>='2010-09-16 00:32:41.960' 但那只会让我

将varchar数据类型转换为datetime数据类型导致值超出范围。

正确的语法是什么,我上次使用SQL已经有一段时间了。 提前感谢。

试试:

where [CreatedDate] >= CONVERT(datetime,'2010-09-16 00:32:41.960');
尝试:


使用明确的日期时间格式,以便SQL Server不必猜测如何转换:

where [CreatedDate] >= '2010-09-16T00:32:41.960'
遗憾的是,根据您的区域设置,它可能会将带有空格分隔符(而不是
T
)的表单解释为
YYYY-DD-MM hh:MM:ss
。您的示例给出了一个超出范围的月份(以及该月早期日期的错误结果,但day=month时除外)

我通常会将安全格式列为:

  • YYYYMMDD
  • YYYY-MM-DD'hh:MM:ss
  • YYYY-MM-DD'hh:MM:ss.mil
如果转换为
datetime2
date
,还有一些其他格式现在是安全的,但我记不起来了,上面的内容通常就足够了


另一种选择是在使用这些日期文字之前运行语句:

set dateformat mdy
select MONTH('2010-09-16 00:32:41.960')
结果为
9
,而您的体验可以通过以下方式再现:

set dateformat dmy
select MONTH('2010-09-16 00:32:41.960')

使用明确的日期时间格式,以便SQL Server不必猜测如何转换:

where [CreatedDate] >= '2010-09-16T00:32:41.960'
遗憾的是,根据您的区域设置,它可能会将带有空格分隔符(而不是
T
)的表单解释为
YYYY-DD-MM hh:MM:ss
。您的示例给出了一个超出范围的月份(以及该月早期日期的错误结果,但day=month时除外)

我通常会将安全格式列为:

  • YYYYMMDD
  • YYYY-MM-DD'hh:MM:ss
  • YYYY-MM-DD'hh:MM:ss.mil
如果转换为
datetime2
date
,还有一些其他格式现在是安全的,但我记不起来了,上面的内容通常就足够了


另一种选择是在使用这些日期文字之前运行语句:

set dateformat mdy
select MONTH('2010-09-16 00:32:41.960')
结果为
9
,而您的体验可以通过以下方式再现:

set dateformat dmy
select MONTH('2010-09-16 00:32:41.960')

不带格式说明符的
CAST
CONVERT
将执行与原始查询中完全相同的转换-并且由于相同的原因失败。
CAST
CONVERT
不带格式说明符的转换将执行与原始查询中完全相同的转换-并且由于相同的原因失败。我无法确定对数据库的更改,我知道它是一种过时的格式,但仍然需要使用它:(但是查询可以工作,thanks@sd_dracula-你看过我的编辑吗?另外,我不确定你在说什么更改-我以为这只是一个查询…我无法更改数据库,我知道它是一种过时的格式,但仍然需要使用它:(但这个查询是有效的,thanks@sd_dracula-你看过我的编辑吗?还有,我不知道你在说什么修改-我以为这只是一个查询。。。