我有payment
表,其中一列p_craetedate
类型p_createdate
是DateTime
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'
创建的行答案 0 :(得分:3)
使用SQL Server 2008 及更新版本中的DATE
数据类型:
SELECT (list of columns)
FROM dbo.tbl_Payments
WHERE CAST(p_createddate AS DATE) = '20130716'
DATE
数据类型只包含日期 - 没有时间部分 - 因此与ISO-8601格式的20130716
进行比较(适用于SQL Server的任何语言/区域设置)将为您提供2013年7月16日创建的所有行 - 无论何时何地。
答案 1 :(得分:1)
您可以使用之前某些答案中的查询,但请先阅读sargable
。
SELECT * FROM tbl_Payments
WHERE p_createdate >= '20130716'
AND p_createdate < '20130717'
答案 2 :(得分: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)