示例(不是这样工作的):
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
其中 Date 应使用参数年、月、日作为整数。为了避免语言环境的问题,我明确不想使用像“yyyy/mm/dd”或类似的字符串。
如果这很重要,我正在 MSSQL 数据库上使用 Microsoft SQL Server Management Studio。
注意:我确信这是微不足道的,但我既没有使用谷歌也没有找到解决方案。
示例(不是这样工作的):
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
其中 Date 应使用参数年、月、日作为整数。为了避免语言环境的问题,我明确不想使用像“yyyy/mm/dd”或类似的字符串。
如果这很重要,我正在 MSSQL 数据库上使用 Microsoft SQL Server Management Studio。
注意:我确信这是微不足道的,但我既没有使用谷歌也没有找到解决方案。
为了避免语言环境的问题,我明确不想使用像“yyyy/mm/dd”或类似的字符串。
为避免这种情况,最好的方法是将日期传递为与语言无关的YYYYMMDD
. 这样它将与语言无关:
SELECT * FROM User
WHERE LastActivity > '19800101';
使用ISO date format
哪个yyyymmdd
SELECT * FROM User
WHERE LastActivity > CONVERT(DATE, (CONVERT(VARCHAR(4), @Year) +
RIGHT('0' + CONVERT(VARCHAR(2), @Month),2) +
RIGHT('0' + CONVERT(VARCHAR(2), @Date),2) ))
我一直发现大多数数据库都会接受 'dd-mmm-yyyy' 作为日期参数,而且我几乎在任何地方都使用它。有些人没有(例如 MS/Access),但 SQL/Server 有。这种格式被广泛接受,但显然您可能需要使其特定于语言。
SELECT * FROM User WHERE LastActivity > '11-Dec-2012';
我认为“转换”功能可以满足您的需求。要制作 1980 年 3 月 20 日,请执行以下操作:
Convert(date, '1980-03-20')
您的确切查询将是:
SELECT * FROM User
WHERE LastActivity > Convert(date, '1980-01-01')
如果您使用的是 SQL Server 2012 及更高版本,则可以使用更简单的 DATEFROMPARTS 函数:
SELECT * FROM User
WHERE LastActivity > DATEFROMPARTS(1980,01,01)