相关疑难解决方法(0)

迄今为止的演员阵容是可以讨论的,但这是一个好主意吗?

在 SQL Server 2008中添加了日期数据类型。

datetime列转换datesargable并且可以在datetime列上使用索引。

select *
from T
where cast(DateTimeCol as date) = '20130101';
Run Code Online (Sandbox Code Playgroud)

您拥有的另一个选择是改用范围。

select *
from T
where DateTimeCol >= '20130101' and
      DateTimeCol < '20130102'
Run Code Online (Sandbox Code Playgroud)

这些查询是同样好还是应该优先于另一个?

sql-server

51
推荐指数
2
解决办法
8365
查看次数

日期时间仅作为日期

我知道 SQL Server 2005 不支持DATE,因此不可能将日期时间转换为日期。

我想要做的是在当前一周的一整天内列出所有具有日期时间的记录。

所以我需要在本周星期一创建的所有记录忽略时间戳。目前我正在使用以下内容,它确实显示了本周的周一至周五,但包括时间戳,这意味着我将根据查询的运行时间看到不同的输出:

set datefirst 1

select 
    DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Monday,
    DATEADD(day, 2 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Tuesday,
    DATEADD(day, 3 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as wednesday,
    DATEADD(day, 4 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Thursday,
    DATEADD(day, 5 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Friday
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供帮助吗?

我的预期输出将是本周每一天的一列,每周从星期一开始(即:Datefirst 1)。最终,我将在 case 语句中使用它,例如:

CASE
WHEN DateColumn >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 datetime

4
推荐指数
1
解决办法
1645
查看次数

标签 统计

datetime ×1

sql-server ×1

sql-server-2005 ×1