我必须写一个带有输入日期的存储:
CREATE PROCEDURE [dbo].[csoft_SAT_Festivita_Delete]
(
myData SMALLDATETIME
)
AS
BEGIN
...
在存储中我必须做这样的比较
SELECT
...
WHERE
myDataFiels = @myData
查找给定年/月/日的所有记录。
但如果我不进行一些转换,结果就不是我期望的结果。
在网上有很多建议,我有点困惑.... 在表中,该字段是一个小时间。 Pileggi
答案 0 :(得分:3)
比较中表格字段的数据类型是什么?通常,最好与类似的数据类型进行比较。
在大多数情况下,建议使用DATETIME
数据类型,因为SMALLDATETIME
不符合ANSI或ISO 8601标准。
另外,你能详细说明你想要通过比较实现的目标吗?例如,如果要过滤在给定日期发生的所有记录,则应执行以下操作:
CREATE PROCEDURE [dbo].[csoft_SAT_Festivita_Delete]
(
@myDTparam DATETIME
)
AS
BEGIN
...
SELECT
...
WHERE
myDTfield >= CAST(@myDTparam AS DATE) AND
myDTfield < CAST(@myDTparam + 1 AS DATE)
使用DATETIME
数据类型时可以这样做,因为此数据类型支持整数加/减,以便添加或减去天数。此外,当您将DATETIME
转换为DATE
时,您会删除DATETIME
值的时间部分,但仍可以将DATE
值与DATETIME
值进行比较{1}}值。