当前位置: 首页 > 面试题库 >

如何在SQL中选择一个月的第一天?

阳修永
2023-03-14
问题内容

我只需要选择给定datetime变量的月份的第一天。

我知道使用这种代码非常容易:

select CAST(CAST(YEAR(@mydate) AS VARCHAR(4)) 
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)

但这不是很优雅,也可能不是很快。

有一个更好的方法吗?我正在使用SQL Server 2008。


问题答案:
SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth


 类似资料:
  • 问题内容: 我有这个SQL查询: 这将导致类似于以下的输出: 我想每个Foo仅保留第一行,而忽略其余的行。 我怎么做? 问题答案:

  • 问题内容: 我有一个生成的DataFrame,如下所示: 结果如下: 如您所见,DataFrame按升序排列,然后按降序排列。 我想选择每个组的第一行,即 从小时== 0的组中选择(0,cat26,30.9) 从小时= 1的组中选择(1,cat67,28.5) 从小时== 2的组中选择(2,cat56,39.6) 等等 因此,所需的输出将是: 能够选择每个组的前N行也可能很方便。 任何帮助都将受到

  • 问题内容: 有没有比以下更有效的方法: 问题答案: 在查询中使用PARTITION(partitionN)语法应该非常少见。 通常,您只想为分区键指定值,并允许Oracle执行分区消除。例如,如果您的表每天根据TRANSACTION_DATE进行分区 将从今天的分区,昨天的分区和前一天的分区中选择所有数据。

  • 问题内容: 在C#中将是这样的: Linq-To-Sql将其转换为以下T-SQL代码: 但是它与MySQL不兼容。 问题答案: 当我写 有用。在其他RDBMS中,IIRC这样的语句是不可能的,因为不属于任何组合键的不属于分组键的列就被引用了。 这种“怪癖”的行为与我想要的行为非常接近。所以我用它来获得想要的结果:

  • 问题内容: 如何在SELECT中查找一年中的第一天? 我找到了这个月份-但是我没有足够的掌握年份的信息:(我一直在寻找一个单独的查询来查找月份开始和现在之间的数据) 问题答案: 我认为您需要: 老实说,您可以执行以下操作:

  • 问题内容: 我正在尝试选择当前日期前三个月的每月的第一天。 因此,例如,如果当前日期是:“ 2015-11-08”,我的结果将是:“ 2015-08-01” 我希望这是yyyy-mm-dd格式。 我从一开始就尝试过,但是没有运气: 我已经尝试了很多事情,但似乎无法破解,任何建议或帮助都将不胜感激。先感谢您 问题答案: 逻辑很简单: 减去当月的日期减去日期后的1天 减去三个月 在SQL Server