Ber*_*ond 6 sql-server datetime
我想从我的表中获取一些值,其中有一些关于其datetime列的条件.
我想从我的表中获取所述城市的所有酒店值,该表名为"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";
Run Code Online (Sandbox Code Playgroud)
但是,当我将值的一天DateTime值从一位数改为两位数时,如下所述;
string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='15.12.2015 00:00:00' AND deadline >='18.12.2015 00:00:00' ORDER BY city"
Run Code Online (Sandbox Code Playgroud)
我有一个SQLException表示;
将varchar数据类型转换为日期时间数据类型会导致超出范围的值.
Иво*_*дев 10
即使在欧洲和世界各地,使用月份作为日期中三个项目中的第二个也是完全合理的.在美国,在这种情况下,显然,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"
Run Code Online (Sandbox Code Playgroud)
要么
string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='2015-12-15' AND deadline >='2015-12-18' ORDER BY city"
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下查询自行查看 SQL Server 的日期和时间格式:
SELECT
GETDATE()
Run Code Online (Sandbox Code Playgroud)
如您所见,格式为 YYYY-MM-DD HH:MM:SS.MMM。坚持这一点,您将不会遇到任何意外的转换错误。
编辑
使用 ISO 8601 格式的优点是它是一个具有明确规范的国际标准。此外,此格式不受 SET DATEFORMAT 或 SET LANGUAGE 设置的影响。
因此,我会优先推荐它。例子:
2020-02-25
20200225
2020-02-25T18:37:00
尝试改变
15.12.2015 00:00:00
Run Code Online (Sandbox Code Playgroud)
至
2015-12-15 00:00:00
Run Code Online (Sandbox Code Playgroud)
并且其他日期的格式也相同。
| 归档时间: |
|
| 查看次数: |
57091 次 |
| 最近记录: |