【发布时间】:2012-01-01 17:46:27
【问题描述】:
在表中,我有一个名为BillDate (Datetime) 的列。日期时间以YYYY-MM-DD 格式存储(例如:2012-01-01 00:00:00.000)。现在我想检索日期时间值范围之间的值。当我使用以下查询时,我无法得到结果:
SELECT * FROM RequestHeader
WHERE
CONVERT(VARCHAR, RH.BillDate ,105) BETWEEN CONVERT(VARCHAR, @FromDate,105)
AND CONVERT(VARCHAR,@ToDate , 105)
@FromDate is passed as : '2012-01-01'
@ToDate is passed as : '2012-01-01'
【问题讨论】:
-
表格列和参数不使用convert会怎样?
-
"日期时间以 YYYY-MM-DD 格式存储" - 不,不是。它存储为
DateTime,无论其内部表示是什么。不要将格式化与存储混淆。 -
你为什么传入字符串参数而不是
DateTime? -
谢谢。如果我删除转换功能,它确实很好用。但是当日期时间作为 '2012-01-01 08:09:00.000' 存储在列中时呢?
-
SQL Server 中的
DateTime不存储在任何 STRING FORMAT 中 - 它是一个DateTime,它存储为 8 个二进制字节。它应用了 NO FORMATTING - NONE。
标签: sql-server datetime