【发布时间】:2012-02-08 21:45:35
【问题描述】:
我使用的是 SQL SERVER 2008。
我有一个以日期时间格式存储日期的表格(即2012-01-21 15:00:00.000)
我正在尝试过滤掉所有早于“今天”的日期。所以我试图通过使用下面的查询来做到这一点。
SELECT Date
FROM MyTable
WHERE Date >= GETDATE()
当我运行它时,我得到了以下错误。
Conversion failed when converting date and/or time from character string.
我做错了什么吗?感谢您的帮助,如果我需要提供更多信息,请告诉我!
更多信息:
[Date] 是 MyTable 中的 DateTime 类型。
我还有一个视图,它只选择 [日期] 并且不进行任何操作
我正在通过视图访问 [日期]
【问题讨论】:
-
您的表格中
Date列的类型是什么? -
听起来 Date 列是 VARCHAR/NVARCHAR 而不是 DATETIME。因此,虽然日期/时间可以像日期时间一样格式化,但就架构而言,它们并没有被存储为一个。你能确认一下数据库架构吗?
-
我检查了我的日期列的数据类型,它显示“日期时间”,但是我正在查询一个视图,该视图部分包含在该表中。那么当通过我的视图访问时,DataType 会丢失吗?
-
这取决于视图如何提取数据。除非视图正在操作数据,否则数据类型不应丢失。
-
@Chris J,对于 Date 部分,它只是从表中选择日期..
SELECT D.[Date] FROM dbo.MyTable
标签: sql sql-server-2008 datetime date