在 SQL Server 中,我可以做相当于to_char(date_field, 'YYYY-MM-DD:HH24')在 Oracle 中的操作2012-01-30:23吗?
我正在编写一份报告,该报告允许人们打印数据以进行物理签名。部分要求是以 DDMONYY (27Aug12) 格式格式化执行日期。我找不到在报告中设置日期格式的方法。
如何将报告执行时间格式化为 DDMONYY 格式?
我已经处理了很长时间的 MS SQL Server 日期时间类型,但从未想过为什么会发生以下情况:
yyyy-MM-dd hh:mm:ssWHERE TimeStamp >= 'yyyy-MM-dd hh:mm:ss'似乎只有当我更改指定的格式并使用欧洲格式编写它时才有效,例如WHERE TimeStamp >= 'dd-MM-yyyy hh:mm:ss'. 为什么 SQL Server 以一种在应用于自身时不可覆盖或有效的格式向我显示日期?我在编写查询时更改日期格式没有任何问题,但我想在应用程序级别(Java-JDBC 应用程序)使用这些日期,并且我不想一直应用日期格式更改。 .. 谁能解释一下为什么会发生这种情况,以及是否有任何方法可以在数据库级别解决它?谢谢!!
编辑:请参阅下面 Management Studio 中错误的屏幕截图。

我有一个 CSV 文件,日期是这样写的:250909,240909它们作为 varchars 存储在 SQL Server 数据库中。
我如何让它将它们转换为日期,以便它像这样显示:25/09/09,使用dd/mm/yyyy格式?
目前我可以让它进行转换,但它会像这样转换:2025/09/09,这意味着它使用的yyyy/mm/dd格式是错误的,看到第一列是日期,第二列是月份,第三列是年份。
我对SET DATEFORMAT命令有一些疑问。
1)该命令是否只用于插入和更新日期格式,不影响该列的日期格式?或者这也会在插入值后影响我的表吗?
2)我尝试使用以下命令(用于日期数据类型)并得到类似This session's YDM date format is not supported when converting from this character string format to date, time, datetime2 or datetimeoffset. Change the session's date format or provide a style to the explicit conversion.
. 为什么日期数据类型会出现错误(对于 smalldatetime 它的工作原理如链接所示)?
CREATE TABLE #tempTable (DateFormatSample DATE)
SET DATEFORMAT MDY
INSERT INTO #tempTable
VALUES ('09/28/2007')
SET DATEFORMAT YDM
INSERT INTO #tempTable
VALUES ('2007/28/09')
SET DATEFORMAT YMD
INSERT INTO #tempTable
VALUES ('2007/08/28')
SELECT DateFormatSample
FROM #tempTable
DROP TABLE #tempTable …Run Code Online (Sandbox Code Playgroud) 我正在尝试DATE使用以下语句获取对象:
TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS TZR')
Run Code Online (Sandbox Code Playgroud)
和
TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD TZH:TZM:SS TZR')
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,它都告诉我:ORA-01821: date format not recognized.
我TZR从https://www.techonthenet.com/oracle/functions/to_date.php得到了格式说明符,即:
TZD 夏令时信息。例如,“太平洋标准时间” TZH 时区小时。 TZM 时区分钟。 TZR 时区区域。
用时区指定日期/时间的正确方法是什么?
我知道问这个问题有点愚蠢,但是否有 Transact-SQL 函数或任何返回所有CONVERT(datetime)样式(格式)的函数?类似的东西fnDateFormats将返回所有日期格式:
输出:
日期格式 | SQL代码 月/日/年 101
等等。
我收到的日期格式为“ Sun Jun 20 00:40:27 IST 2021 ”。我需要将其以datetime(6)格式插入到我的 MySQL 数据库中。
我用了
STR_TO_DATE('Sun Jun 20 00:40:27 IST 2021','%d/%m/%Y %T')
Run Code Online (Sandbox Code Playgroud)
并收到
日期时间值不正确:函数 str_to_date 错误为“Sun Jun 20 00:40:27 IST 2021”。
我也尝试过
date_format('Sun Jun 20 00:40:27 IST 2021','%d/%m/%Y %T')
Run Code Online (Sandbox Code Playgroud)
并收到
日期时间值不正确:'Sun Jun 20 00:40:27 IST 2021
谁能指导我修复它?
PS:我正在使用prepared statement,executeBatch()将数据插入表中。
我已经移动了我的 SQL Server 的域,虽然一切主要都在工作,但查询的日期格式似乎已经改变。
所以如果我运行这个:
select convert(datetime,'2012-02-13')
Run Code Online (Sandbox Code Playgroud)
我得到
消息 242,级别 16,状态 3,第 1 行
varchar 数据类型到 datetime 数据类型的转换导致值超出范围。
当我跑
select @@Language, @@Langid
Run Code Online (Sandbox Code Playgroud)
我得到
英国 | 23
我试图设置 sp_defaultlanguage 但这似乎没有区别。
我还检查了控制面板中的区域设置,似乎也设置为英国。
甚至此代码示例也会导致问题:
set language british
select convert(datetime, '2012-02-13')
Run Code Online (Sandbox Code Playgroud)
结果
将语言设置更改为英国。消息 242,级别 16,状态 3,第 3 行 varchar 数据类型到 datetime 数据类型的转换导致值超出范围。
软件:
Linux cjz-eshop1-p 5.4.0-33-generic #37-Ubuntu SMP Thu May 21 12:53:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
psql (PostgreSQL) 12.3 (Ubuntu 12.3-1.pgdg18.04+1)
Run Code Online (Sandbox Code Playgroud)
由于将 CSV 导入我的服务器上的数据库,我收到错误。
ERROR: current transaction is aborted, commands ignored until end of transaction block
Price 244385 ERROR: date/time field value out of range: "30.06.2020"
Hint: Perhaps you need a different "datestyle" setting.
Position: 160
ERROR: current transaction is aborted, commands ignored until end of transaction block
Price 244386 ERROR: date/time field value out of range: "30.06.2020"
Hint: Perhaps …Run Code Online (Sandbox Code Playgroud) date-format ×10
sql-server ×5
datetime ×2
t-sql ×2
csv ×1
date ×1
import ×1
mysql ×1
oracle ×1
postgresql ×1
ssrs-2008 ×1