示例(不是这样工作):
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
其中Date应使用参数year,month,day作为整数。为了避免语言环境的麻烦,我明确地不想使用类似" yyyy / mm / dd"的字符串。或类似的。
如果这很重要,我正在使用MSSQL数据库上的Microsoft SQL Server Management Studio。
注意:我确信这是微不足道的,但我找不到使用谷歌或SO的解决方案。
答案 0 :(得分:6)
为了避免语言环境的麻烦,我明确地不想使用 像“yyyy / mm / dd”或类似的字符串。
为了避免这种情况,最好的方法是将日期作为语言中性传递,如YYYYMMDD
。这样它将独立于语言:
SELECT * FROM User
WHERE LastActivity > '19800101';
答案 1 :(得分:2)
使用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) ))
答案 2 :(得分:0)
我一直发现大多数数据库都接受'dd-mmm-yyyy'作为日期参数,我几乎在任何地方都使用它。有些人没有(例如MS / Access),但有SQL / Server。这种格式被广泛接受,但显然您可能需要使其特定于语言。
SELECT * FROM User WHERE LastActivity > '11-Dec-2012';
答案 3 :(得分:0)
我认为'转换'功能可以满足您的需求。要制作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)