- 作品
DECLARE @MyDateFormatString NVARCHAR(MAX) = '2017-08-15 7:12:19 PM'
PRINT @MyDateFormatString
DECLARE @MyDateFormat DATETIME = '2017-08-15 7:12:19 PM'
PRINT @MyDateFormat
IF (CONVERT(DATETIME, @MyDateFormatString) = CONVERT(DATETIME, @MyDateFormat)) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END
- 不起作用
IF (CONVERT(DATETIME, '2017-08-15 7:12:19 PM') = CONVERT(DATETIME, 'Aug 15 2017 7:12PM')) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END
- 为什么!!!
答案 0 :(得分:2)
更改
IF (CONVERT(DATETIME, '2017-08-15 7:12:19 PM') = CONVERT(DATETIME, 'Aug 15 2017 7:12PM')) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END
到
IF (CONVERT(DATETIME, '2017-08-15 7:12:19 PM') = CONVERT(DATETIME, 'Aug 15 2017 7:12:19 PM')) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END
或
IF (CONVERT(DATETIME, '2017-08-15 7:12 PM') = CONVERT(DATETIME, 'Aug 15 2017 7:12PM')) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END
在第二个查询中,您没有比较秒数。在您的第一个查询中进行比较
2017-08-15 7:12 PM
到
2017年8月15日下午7:12
哪个是正确的。
在第二个比较中
2017-08-15 7:12:19 PM
到
7:12:19与7:12不一样。所以改变任何一种格式都是正确的。2017年8月15日下午7:12
编辑:
要解决您的评论,如果您希望DATETIME不使用秒,请使用SMALLDATETIME,它将适用于您的方案。使用原始的第二个查询查看此示例。但要小心,它会将时间格式缩短为hh:mm:00,所以请注意这一点:
IF (CONVERT(SMALLDATETIME, '2017-08-15 7:12:19 PM') = CONVERT(DATETIME, 'Aug 15 2017 7:12PM')) BEGIN PRINT 'YES!' END ELSE BEGIN PRINT 'NO' END