0

我有payment表,其中一列的p_craetedate类型p_createdateDateTime

CREATE TABLE [dbo].[tbl_Payments](
    [p_id] [bigint] IDENTITY(100000,1) NOT NULL,
    [p_amount] [int] NOT NULL,
    [p_status] [tinyint] NOT NULL,
    [p_createdate] [datetime] NOT NULL,
    [p_creditor] [int] NOT NULL,
    [p_debtor] [int] NOT NULL,
    [p_type] [int] NOT NULL,
 CONSTRAINT [PK_tbl_Payments] PRIMARY KEY CLUSTERED )

我想获取在“2013-07-16”创建的行

4

3 回答 3

3

使用DATESQL Server 2008和更新版本中存在的数据类型:

SELECT (list of columns)
FROM dbo.tbl_Payments
WHERE CAST(p_createddate AS DATE) = '20130716'

DATE数据类型仅包含日期 - 没有时间部分 - 因此与ISO 20130716-8601 格式(适用于 SQL Server 的任何语言/区域设置)相比,将为您提供 2013 年 7 月 16 日创建的所有行- 无论一天中的什么时候。

于 2013-07-21T10:17:13.940 回答
1

您可以使用来自先前答案的查询,但请先阅读sargable

SELECT * FROM tbl_Payments
WHERE p_createdate >= '20130716'
    AND p_createdate < '20130717'
于 2013-07-21T10:19:57.277 回答
0
SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue >= DATEADD(dd, DATEDIFF(dd,0,'2013-07-16 00:00'), 0) 
AND dateValue < DATEADD(dd, DATEDIFF(dd,0,'2013-07-17 00:00'), 1)
于 2013-07-21T10:16:12.953 回答