Sql server 创建;在/和之间-从给定日期时间开始启用日期时间
我想创建两个Sql server 创建;在/和之间-从给定日期时间开始启用日期时间,sql-server,tsql,datetime,Sql Server,Tsql,Datetime,我想创建两个DATETIME变量,当在SQL Server 2008上的存储过程中只给定一个DATETIME时,我可以使用它们在和之间进行检查 因此,当我得到2012/12/31 15:32:12作为输入时,我想从中生成两个新变量,分别是@from=2012/12/31 00:00:00和@to=2012/12/31 23:59:59 这两个变量用于检查记录是否位于它们之间,也就是说,与输入日期在同一天 我在使用CAST和CONVERT时无所事事,但我真的不知道如何以我想要的方式操纵日期 我应该
DATETIME
变量,当在SQL Server 2008上的存储过程中只给定一个DATETIME
时,我可以使用它们在和之间进行检查
因此,当我得到2012/12/31 15:32:12
作为输入时,我想从中生成两个新变量,分别是@from=2012/12/31 00:00:00
和@to=2012/12/31 23:59:59
这两个变量用于检查记录是否位于它们之间,也就是说,与输入日期在同一天
我在使用CAST和CONVERT时无所事事,但我真的不知道如何以我想要的方式操纵日期
我应该换一种方式吗?或者有我不知道的功能吗?你可以
declare @input datetime = '2012/12/31 15:32:12'
declare @from datetime = dateadd(day, 0, datediff(day, 0, @input))
declare @to datetime = dateadd(second, -1, dateadd(day, 1, @from))
>>>
2012-12-31 00:00:00.000 2012-12-31 23:59:59.000
你可以
declare @input datetime = '2012/12/31 15:32:12'
declare @from datetime = dateadd(day, 0, datediff(day, 0, @input))
declare @to datetime = dateadd(second, -1, dateadd(day, 1, @from))
>>>
2012-12-31 00:00:00.000 2012-12-31 23:59:59.000
现在它是版本独立的
declare @from datetime, @to datetime
SET @from = convert(varchar, convert(datetime, '2012/12/31 15:32:12', 111), 112)
SET @to = DATEADD(day, 1, @from)
select * from yourtable where test date >= @from AND date < @to
声明@from datetime,@到datetime
SET@from=convert(varchar,convert(datetime,'2012/12/31 15:32:12',111),112)
设置@to=DATEADD(第1天,@from)
从测试日期>=@from和日期<@to的表中选择*
现在它与版本无关
declare @from datetime, @to datetime
SET @from = convert(varchar, convert(datetime, '2012/12/31 15:32:12', 111), 112)
SET @to = DATEADD(day, 1, @from)
select * from yourtable where test date >= @from AND date < @to
声明@from datetime,@到datetime
SET@from=convert(varchar,convert(datetime,'2012/12/31 15:32:12',111),112)
设置@to=DATEADD(第1天,@from)
从测试日期>=@from和日期<@to的表中选择*
首先,使用适当的日期格式(本例中为111)将输入日期转换为varchar,对于to日期,附加午夜时间
然后将您的varchar转换回datetime
例如:
SELECT @from = CAST(CONVERT(VARCHAR(10), GETDATE(), 111) AS DATETIME)
,@to = CAST(CONVERT(VARCHAR(10), GETDATE(), 111)+' 23:59:59:997' AS DATETIME)
下面是一个有用的datetime格式图表,并附有简要说明
首先使用适当的日期格式(本例中为111)将输入日期转换为varchar,对于to日期,附加午夜时间 然后将您的varchar转换回datetime 例如:
SELECT @from = CAST(CONVERT(VARCHAR(10), GETDATE(), 111) AS DATETIME)
,@to = CAST(CONVERT(VARCHAR(10), GETDATE(), 111)+' 23:59:59:997' AS DATETIME)
下面是一个有用的datetime格式图表,并附有简要说明
注意@to的准确性。23:59:59.001是有效日期,但如果减去整秒,则不会显示在您的范围内
更常见的做法是设置@from,然后使用<@from+1而不是介于两者之间。(在SQL中,加号会增加整整一天)。请注意@to的准确性。23:59:59.001是有效日期,但如果减去整秒,则不会显示在您的范围内
更常见的做法是设置@from,然后使用<@from+1而不是介于两者之间。(加号在SQL中增加了整天)。它告诉我,
日期不是一个定义的系统类型
--这个版本特定吗?现在它是版本独立的它告诉我,日期不是一个定义的系统类型
--这个版本特定吗?现在它是版本独立的yep,更好地使用>=是的,更好地使用>=和