标签: datetime

如何找到自会计月开始以来的天数?

这与我的问题有关如何在 SQL 服务器中找到上个月的第 XX 天?

会计月从每个月的 26 日开始。

我需要从任何日期找出:

  • 会计月的开始日期 (Start_Of_Fiscal_Month)
  • 进入会计月的天数 (Day_Of_Fiscal_Month)

例如:

CurrentDate - '2014-04-26'

Start_Of_Fiscal_Month = 2014-04-26
Day_Of_Fiscal_Month = 1
Run Code Online (Sandbox Code Playgroud)
CurrentDate - '2014-05-02'

Start_Of_Month = 2014-04-26
Day_Of_Fiscal_Month = 7
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 datetime date

3
推荐指数
1
解决办法
1119
查看次数

有没有办法在SQL中计算上个月/上年的昨天/今天?

有没有办法在 SQL 中计算上个月(和去年)的今天(和昨天)?

假设今天是 26-May-2015 那么如何找到?

  • 去年的今天,即 26-May-2014?
  • 上个月的今天,即 26-April-2015?
  • 去年的昨天,即 25-May-2014?
  • 上个月的昨天,即 25-April-2015?

sql-server-2008 sql-server datetime date

3
推荐指数
2
解决办法
5787
查看次数

日期时间聚集索引不断变得碎片化

我有一个名为 CDR 的大表(400 万条记录),用于在 VoIP 系统中存储来自 Cisco 路由器的 CDR(呼叫详细记录),该表不断增长,并且永远不会有无序插入的记录。我们也不更新或删除行。

由于我们的大多数查询都基于发起呼叫的时间,因此我在此列(DATETIME数据类型)上创建了我的主要聚集索引。然而,在短暂的时间后,索引变得碎片化,仅仅一周后,它的碎片化程度就超过了 70%,因此我们需要重建它。我不明白为什么会发生这种情况,因为我们按顺序插入,并且不更新或删除行。

任何减少或消除碎片的建议将不胜感激。

我在装有 Windows Server 2012 的旧 Xenon 服务器上使用 SQL Server 2014 Enterprise 版本。

sql-server clustered-index fragmentation datetime sql-server-2014

3
推荐指数
1
解决办法
957
查看次数

如何在数据库中找到最大日期戳?

我想在数据库中找到最近的日期。

我可以使用 sys.dm_db_index_usage_stats 来查找它上次更新的时间,但如果自上次服务器重启以来它没有更新,则此处没有任何值

我可以使用 MAX()

use adventureworks
select Max(ModifiedDate)
from HumanResources.Department
Run Code Online (Sandbox Code Playgroud)

但是我需要查看数据库中的每个表,找到每个日期时间(或日期、小日期时间、日期时间2)字段并多次运行查询,然后确定哪个是最近的。

我想要类似的东西

use <some_db>
select MAX(<FieldThatIsADate>)
from <anytable_in_db>
Run Code Online (Sandbox Code Playgroud)

我已经谷歌搜索,并没有找到使用数据类型代替字段名称的方法。我没有试图找到命名特定表的方法。

我怎样才能使这个查询像现实一样便携?

如果我必须为每个数据库中的每个表构建和运行一个唯一的查询,那么这就是我必须做的。

sql-server datetime

3
推荐指数
1
解决办法
6085
查看次数

epoch 的简写

是否有 epoch 的速记,而不必一直打字'1970-1-1 00:00:00'

postgresql datetime

3
推荐指数
1
解决办法
44
查看次数

当客户端执行时区逻辑时,timestamptz 是首选吗?

我正在将 Web 应用程序从 SqlServer 迁移到 PostgreSQL,并且我正在尝试找出要替换的类型datetime2

一般的建议似乎是总是使用timestamptz,以及从不使用timestamp。给出的原因往往是时间戳和timestamptz存储相同(因此没有性能损失)并timestamptz自动转换为连接的时区。在 Rails 和 PostgreSQL 中完全忽略时区 | 堆栈溢出

不幸的是,我的旧版 .NET 代码库与日期时间非常不一致,我们通常以 UTC 进行渲染,而不管用户时区如何。最近的代码一直在使用 NodaTime 及其Instant类,但我们很少需要处理时间并且仅显示日期已经“足够接近”。然而,我对正确使用 NodaTime 的理解是尽可能晚地将 转换Instant为,而不是在数据库中。LocalDateTime

除此之外,我不完全确定 Postgres 如何知道“当前用户”的正确时区。我知道您可以专门将时区设置为会话参数SET TIME ZONE 'UTC';,您是否希望为每个连接执行此操作以适合“当前用户”?如果是这样,每当从连接池检索连接时都会重置它吗?我还看到 Npgsql 能够为连接字符串设置时区,如果是针对每个用户,这可能是不合适的?

所有这些使我认为最好的选择是用于timestamp所有日期时间,并使用应用程序逻辑转换为本地日期时间。我想另一个选择是用于timestamptz所有日期时间,强制连接在连接字符串中使用 UTC,并使用应用程序逻辑转换为本地日期时间。但是我担心 Postgres 会在 UTC 和 UTC 之间进行无操作转换时执行额外的工作。

TLDR:timestamptz如果应用程序始终插入/读取 UTC 并转换为本地日期时间本身,这仍然是首选吗?

postgresql timestamp datetime

3
推荐指数
1
解决办法
2727
查看次数

转换日期格式以插入MySQL数据库

我收到的日期格式为“ Sun Jun 20 00:40:27 IST 2021 ”。我需要将其以datetime(6)格式插入到我的 MySQL 数据库中。

我用了

STR_TO_DATE('Sun Jun 20 00:40:27 IST 2021','%d/%m/%Y %T')
Run Code Online (Sandbox Code Playgroud)

并收到

日期时间值不正确:函数 str_to_date 错误为“Sun Jun 20 00:40:27 IST 2021”。

我也尝试过

date_format('Sun Jun 20 00:40:27 IST 2021','%d/%m/%Y %T')
Run Code Online (Sandbox Code Playgroud)

并收到

日期时间值不正确:'Sun Jun 20 00:40:27 IST 2021

谁能指导我修复它?

PS:我正在使用prepared statement,executeBatch()将数据插入表中。

mysql date-format datetime

3
推荐指数
1
解决办法
3594
查看次数

在 DATETIME 列上连接表时优化 SQL Server 查询

我正在使用 SQL Server,我有两个表,table1并且table2. 两个表都有一个DATETIME表示为 的列dt。我不仅需要根据某些条件连接这些表,还要确保匹配的行具有相同的日期(此处不考虑时间)dt

这是我当前使用的查询:

select *
From table1 a inner join table2 b
    on a.id = b.a_id
    and convert(date, a.dt) = convert(date, b.dt)
Run Code Online (Sandbox Code Playgroud)

该查询可以获取我需要的结果,但我担心它的性能,尤其是当表大小增加时。

我想知道是否有更高效的方法可以达到相同的结果?是否有技术或 SQL Server 功能可以帮助我优化此查询,尤其是日期比较部分?

任何意见或建议将不胜感激。先感谢您。

join sql-server datetime date

3
推荐指数
1
解决办法
1485
查看次数

为什么 SQL Server 会删除传递给 SMALLDATETIME 字段的值的秒数?

我在用着

Microsoft SQL Server 2019 (RTM-CU22) (KB5027702) - 15.0.4322.2 (X64)
2023 年 7 月 27 日 18:11:00 版权所有 (C) 2019 Microsoft Corporation Express Edition(64 位),适用于 Windows 10 Pro 10.0(内部版本 19045: )

我有一张用它创建的表

CREATE TABLE yokogawaReading(
yokogawaReading INTEGER NOT NULL IDENTITY (1, 1),
readingDate SMALLDATETIME not null,
celsiusTemperature1 DECIMAL (4,2),
relativeHumidity1 DECIMAL (5,3),
celsiusTemperature2 DECIMAL (4,2),
relativeHumidity2 DECIMAL (5,3)
);
Run Code Online (Sandbox Code Playgroud)

每当我尝试插入字段值包含readingDate非零秒值的记录时,例如,

EXEC sp_set_session_context @key = N'readingDateTime', @value = '2023/11/14 11:09:30';

EXEC sp_set_session_context @key = N't1', @value =20.027777777777777777777777778;

EXEC sp_set_session_context …
Run Code Online (Sandbox Code Playgroud)

sql-server datetime

3
推荐指数
1
解决办法
603
查看次数

SQL Server 2008 的 DATETIME2FROMPARTS 替代方案

我正在尝试将日期时间值分开并将其构建在一起以删除分钟、秒等。我希望值是每小时一次。

通常这适用于 SQL Server 2012 机器:

DATETIME2FROMPARTS( DATEPART(year, datum), DATEPART(month, datum), DATEPART(day, datum), DATEPART(hour, datum), 0, 0, 0, 0) as dtHour
Run Code Online (Sandbox Code Playgroud)

但不幸的是在 SQL Server 2008 中它没有!我需要哪个功能才能完成相同的工作?

我还查找了此参考资料:Date&Time functions但这都仅与 SQL Server 2012 兼容。

sql-server date-format datetime

2
推荐指数
1
解决办法
405
查看次数