我有一个 SQL 视图,其中包含一个日期格式为“2012-06-21 19:44:50.543”的列。我需要输入条件以仅显示日期从上个月开始的行。此过程需要使用当前(内置)时间。此外,我需要每月自动更新此类视图。我该怎么做?
答案1
要根据当前系统时间获取从上个月开始的日期,您将使用DATEADD()
和GETDATE()
。
DATEADD
返回指定的日期使用指定的数字间隔(有符号整数)添加到指定的日期部分该日期。
DATEADD (datepart , number , date )
GETDATE
返回当前数据库系统时间戳作为约会时间不包含数据库时区偏移的值。此值源自运行 SQL Server 实例的计算机的操作系统。
GETDATE ( )
计算从上个月开始匹配的日期(请记住,这是一个示例,可能需要修改您的代码):
SELECT [col1], [col2], [dt] FROM [table]
WHERE [dt] >= convert(varchar,DATEADD(MONTH,-1,
DATEADD(MONTH,DATEDIFF(MONTH,0,
getdate()),0)),101)
请阅读DATEDIFF()
以及CONVERT()
了解所表示的格式是如何101
工作的。您可能121
更喜欢
(其他来源:Terry Apodaca 的文章“SQL 日期 - 每月第一天、当前天和最后一天”,来自这个旧地址 到http://v1.terryapodaca.com/2008/01/28/sql-dates-first-current-last-day-of-month (或者你可以阅读存档副本:时光倒流机)。