首先,如果您的日期采用 varchar 格式,请更改它,将日期存储为日期 https://sqlblog.org/2009/10/16/bad-habits-to-kick-mis-handling-date-range-queries它会为您省去很多麻烦,而且最好尽早完成。问题只会变得更糟。
其次,一旦有了约会DO NOT将日期转换为 varchar!保持日期格式,并在应用程序端使用格式来获取所需的日期格式。
根据您的 DBMS,有多种方法可以执行此操作:
SQL Server 2008然后:
SELECT CAST(CURRENT_TIMESTAMP AS DATE)
SQL Server 2005和更早的
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)
SQLite
SELECT DATE(NOW())
Oracle
SELECT TRUNC(CURRENT_TIMESTAMP)
PostgreSQL
SELECT CURRENT_TIMESTAMP::DATE
如果您需要在报告中使用特定于文化的格式,您可以明确说明接收文本框的格式(例如 dd/MM/yyyy),也可以设置语言,以便显示该语言的相关日期格式。
不管怎样,这在 SQL 之外处理得更好,因为在 SQL 中转换为 varchar 会影响您在报告中可能执行的任何排序。
如果您不能/不会将数据类型更改为 DATETIME,那么仍然将其转换为 SQL 中的日期(例如CONVERT(DATETIME, yourField)
),然后发送至报告服务并按上述方式进行处理。