Sql server SQL日期时间比较
我想从我的表中获取一些值,因为它的datetime列有一些条件 我想从名为“LocalHotels”的表中获取指定城市的所有酒店价值。我还应该声明两个Sql server SQL日期时间比较,sql-server,datetime,Sql Server,Datetime,我想从我的表中获取一些值,因为它的datetime列有一些条件 我想从名为“LocalHotels”的表中获取指定城市的所有酒店价值。我还应该声明两个DateTime值。第一个值应小于或等于“开始”列中的酒店值,即datetime数据类型。第二个值应大于或等于“截止日期”列中的酒店值,即datetime数据类型 这两列中的所有datetime值均以德语CultureInfo格式插入 当我在下面陈述问题时,没有问题 string query = "SELECT * FROM LocalHotels
DateTime
值。第一个值应小于或等于“开始”列中的酒店值,即datetime
数据类型。第二个值应大于或等于“截止日期”列中的酒店值,即datetime
数据类型
这两列中的所有datetime
值均以德语CultureInfo
格式插入
当我在下面陈述问题时,没有问题
string query = "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='5.12.2015 00:00:00' AND deadline >='8.12.2015 00:00:00' ORDER BY city";
我得到了一个SQLException,它表示:
结果将varchar数据类型转换为datetime数据类型
在超出范围的值中
试着改变
15.12.2015 00:00:00
到
另一个日期的格式也一样。即使在欧洲和世界各地,将月份作为日期中三项中的第二项也是非常合理的。在美国,在本例中,很明显,SQL的日期时间是MM.DD.YYYY,因此您将选择第15个月和第18个月 因此,您应该使用
string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='12.15.2015 00:00:00' AND deadline >='12.18.2015 00:00:00' ORDER BY city"
string query“从本地酒店中选择*,其中city='LONDON'和start='12.18.2015 00:00:00'按城市排序”
或
string查询“从本地酒店中选择*,其中city='LONDON'和start='2015-12-18'按城市订购”
或
或
测试上述查询,以获得所需格式的日期(用日期或日期列替换GetDate()
)。
正如其他人指出的,您需要YYYY-MM-DD格式。您可以通过运行以下查询来查看SQL Server的日期和时间格式:
SELECT
GETDATE()
如您所见,格式为YYYY-MM-DD HH:MM:SS.MMM。坚持这一点,您将不会遇到任何意外的转换错误
编辑
是一种标准的日期格式。发件人:
使用ISO 8601格式的优点是,它是一个国际标准,具有明确的规范。此外,此格式不受SET-DATEFORMAT或SET-LANGUAGE设置的影响
出于这个原因,我建议它优先于所有其他格式。示例:
2020-02-25
20200225
2020-02-25T18:37:00
是mysql还是sql server?也许您的数据库管理员认为您的15
和18
是月,而不是天?您是否尝试过使用小于或等于12
的值?它是sql server。我尝试了小于12的月份值,结果没有改变。在字符串中写入日期进行比较时,始终使用通用格式YYMMDD-没有问题。对于日期文本,我更喜欢ODBC格式:日期为{d'2015-12-05'}
,时间为{t'23:30:00'
,日期时间为{ts'2015-12-05 23:30:00'}
。这些格式不需要任何(隐式)转换。@Shnugo-不幸的是,YYYY-MM-DD
不适用于所有地区,例如,法语()这适用于SQL Server(从2008年开始),Azure SQL数据库
,Azure SQL数据仓库
,并行数据仓库
。
string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='12.15.2015 00:00:00' AND deadline >='12.18.2015 00:00:00' ORDER BY city"
string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='2015-12-15' AND deadline >='2015-12-18' ORDER BY city"
SELECT CONVERT(char(10), GetDate(),126)
select convert(varchar,getDate(),112)
select replace(convert(varchar, getdate(), 111), '/','-')
SELECT
GETDATE()