Im getting a datetime format problem(mm-dd-yyyy for dd-MM-yyyy), when I install SQL Server 2005 Express. {The exception is: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.} My windows Regional and Language options English (United Kingdom), Sort date format is dd-MM-yyyy. When converting the date time in Sql server is using the mm-dd-yyyy format. But Im supplying the dd-mm-yyyy format date time.
I tried number of things none of them worked for me
1. Tried changing the default language and get the date time format - exec sp_configure 'default language', 2057 reconfigure - did not work EXEC sp_defaultlanguage 'my user name', 'British' - did not work (Ref: http://www.cactushop.com/support/UKUS-date-format-issues-with-MS-SQL---conversion-errors-or-blank-pages__592__.htm)
2. Tried a registry hack by opening regedit, and get the following 3 language keys and change it to decimal 2057: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server90ToolsClientSetupCurrentVersion] [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server90ToolsSetup [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL.1Setup] (Ref: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=62891) - did not work
3. Every thing in the Regional and Language options to UK and British with the date time format input language keyboard and every think else I could think of, which could link to US English or US date format --------- Did not work
4. even went into the extend of modifying the date format on a Windows machine for new users account by editing the HKEY_USERS registry key and creating a new user - Did not work (Ref: http://www.windowsitpro.com/Article/ArticleID/39407/39407.html )
5. Uninstall and reinstall SQL server express several time and did the steps 1 4 where applicable did not work¦.
If anyone has any idea of what I have to do to change the date time format in the SQL Server 2005 to use the dd-mm-yyyy format for dates.... Please help me or point me in the direction in which I have to look for an answer. Thank you very much¦.
I have date coming to one page as a string in the following format"May 4 2005 12:00AM" I need to query one of my tables using this date in combination of other nondate values. How can I convert this date into valid sql server datetime format before I query a database tables Please help
I am having the wrost trouble with this today for some dumb reason... Please don't suggest any alternates; this is just a quick example, full code is more elaberate.
I thought this would be easy. I have a repeater control and a sqldatasource control. I am trying to filter the select statement using DateTime.Now.ToString() and keep getting an invalid date string format. The control is on a content page in my asp.net site. On the master page this <%= DateTime.Now.ToLongDateString() %> works to display the current date. If I try and put <%= DateTime.Now.ToString() %> in the Default value of the SelectParameter it does not work. No intellisense either so I am assuming I am missing something. Here is the code... pretty basic really. <asp:Repeater ID="Repeater1" runat="server" DataSourceID="sqlDSnews"> <ItemTemplate> <h3><%# Eval("newTitle")%></h3> </ItemTemplate> </asp:Repeater> <asp:SqlDataSource ID="sqlDSnews" runat="server" ConnectionString="<%$ ConnectionStrings:XXXX%>" SelectCommand="SELECT [newTitle], [newsDetails], [dateExpires], [newsImage], [dateCreated] FROM [News] WHERE (([GroupID] = @GroupID) AND ([dateExpires] >= @dateExpires))"> <SelectParameters> <asp:QueryStringParameter DefaultValue="0" Name="GroupID" QueryStringField="Gid" Type="Int32" /> <asp:Parameter Name="dateExpires" DefaultValue='<%= DateTime.Now.ToString() %> 'Type="DateTime" /> </SelectParameters> </asp:SqlDataSource> ** NOTE the DateTime does not show up in blue - if that helps with a solution **
I've recently discovered the MS CRM 3.0 stamps any datetime field in SQL as UTC (aka GMT). Even though the end user may select 12:00 noon on the CRM gui interface, the datetime is stamped in SQL as 16:00 (I'm in EST).
So, is there an easy way to read the 16:00 back to local EST, taking into account daylightsavings (DST)? Apparently in VB or C# this conversion is a trivial matter of using ToLocalTime(), but I don't believe SQL 2005 has such a convenient function.
I'm currently building a SQL view that I wish to use to support multiple reports, and it would be ideal for the view to translate the UTC datetime fields (even if via a user-defined function) to EST rather than coding every report or custom app to translate the UTC.
Any suggestions or links to code will be greatly appreciated!
I are using a BULK INSERT to insert the data from a ascii file to a sql table. The table has a ProductInstanceId column that exists in the tables but does not exist in the ascii DICast data. I am setting the ProductInstanceId to a Guid that will be used for Metrics. I would like to create the Guid in C++ and then set it somehow during the BULK INSERT DICastRaw1hr and DICastRaw6hr. I am calling the BULK INSERT from C++/ADO. I do not see how you can set a static data in the BULK INSERT for a column that exists in the table but does not the source data ... seems there should be a way to do this with the format file?
The other way to do this is with a TRIGGER. I have the TRIGGER below. Prior to the calling the BULK INSERT using ADO I will use ADO to ALTER the TRIGGER with the new Guid. When the BULK INSERT runs the ProductInstanceId will be populated with the new Guid.
ALTER TRIGGER DICastRaw1hrInsertGuid ON Alphanumericdata.dbo.DICastRaw1hr FOR INSERT AS UPDATE dbo.DICastRaw1hr SET ProductInstanceId = '4f9a44eb-092b-445b-a224-cc7cdd207092' WHERE modelrundatetime = (select max(modelrundatetime) from Alphanumericdata.dbo.DICastraw1hr(NOLOCK))
More Questions:
- The Trigger is slow. The Bulk Insert without the Trigger runs in about 10 sec ... with the Trigger in about 40 sec. I tried to use the sql code below in the TRigger but it was only doing the UPDATE on the last row. The TRIGGER must run after the BULK INSERT is complete. Now I am using the select (bad). Any comments ...
ALTER TRIGGER DICastRaw1hrInsertDate ON Alphanumericdata.dbo.DICastRaw1hr FOR INSERT AS DECLARE @ID as integer SELECT @ID = i.recordid from inserted i UPDATE dbo.DICastRaw1hr SET ProductInstanceId = '4f9a44eb-092b-445b-a224-cc7cdd207092' WHERE recordid = @ID
- I understand that I could set the Guid in the Default Value part of the table definition using the NEWID() function. I need the Guid to be the same for all the rows that are inserted during the BULK INSERT (all have the same modelrundatetime) ... how would I do this?
Hello all, I'm trying to write a query against an exisiting table that i can't modify and i'm running into a bit of a problem. The table stores timestamps as a char field instead of a datetime. So, i've had to use the CONVERT function to change it to a datetime during my query. A sample is below: SELECT convert(datetime, logged, 120) FROM AP200310 This works, except i want to include the option of querying a single day. Since the data that is returned is in this format: 12/12/2006 6:54:15 PM The following sql statement doesn't work:SELECT convert(datetime, logged, 120) FROM AP200310 WHERE logged = '12/12/2006' Thanks in advance for any help.
Hi, I wanted to take a date from my Sql server. it is save as dd/mm/yyyy. but when i use the select command it return me dd-mm-yyyyT00:00:00.0000000+08:00. i try to use this following code but it is not working....thedate = String.Format("{0:dd/MM/yyyy}", (reader.GetSqlDateTime(1))) here is my complete codePublic Function deleteOrder(ByVal oid As Integer) As String conn = dbCon.getConnection() Dim cmd1 As New SqlCommand Dim reader As SqlDataReader Dim valid, sendDate, sd As String Dim thedate As String Dim cancelPeriod As String = CStr(System.DateTime.Today.AddDays(+3))
If Not reader.HasRows Then valid = "No match found" Else If reader.Read Then
'String.Format("{0:dd/MM/yyyy}",(dr.GetSqlDateTime(1))); thedate = String.Format("{0:dd/MM/yyyy}", (reader.GetSqlDateTime(1))) 'sd = reader("orderSendDate").ToString 'sendDate = sd.Substring(0, 10) conn.Close() End If End If 'Return errMsg If thedate = Convert.ToDateTime(cancelPeriod) Or thedate < CStr(System.DateTime.Today.AddDays(+3)) Then valid = "You are not allowed to change" Else Try conn.Open() Dim strUpdate As String Dim cmd As New SqlCommand strUpdate = "update orders set orderStatus = @os where orderID = @oid" cmd.Parameters.Add("@os", "c") cmd.Parameters.Add("@oid", oid)
cmd.CommandText = strUpdate cmd.Connection = conn cmd.ExecuteNonQuery() conn.Close() valid = "Cancellation succesful" updateOrderItemStatus(oid) Catch ex As Exception 'Response.Write(ex.Message) errMsg = ex.Message conn.Close() End Try End If
Return valid End Function
When i call my web method it gives me an error saying that page is not found... please teach me how to convert it. thx
I have installed the trial version of windows server 2003 on the second hard drive on my computer. I set up IIS and ran my website on it but the problem is when I do something on the site, which has a sql insert statement regarding datetime.now it says, "conversion failed when converting datetime from character string"
I think it's to do with the clock on server 2003, the format is like: 11/07/2007 2:39:59 a.m. I think it should be in format AM and not a.m. Any ideas on how to change the time format on a computer?
Or should I just change the Columns in my table to a Nvarcher value or something?
CREATE PROCEDURE dbo.spAddEvents ( @guid uniqueidentifier, @language char (2), @date as datetime, @eventId as varchar (50), @userid as varchar (20) ) AS execute('insert into tblEvents'+@language+'( guid, [date], [id], userid) values('''+@guid+''','''+@date+''','+@eventId+','''+@userId+''')')
GO
The problem is when I try to insert a new event. The event insert are fine, but the datetime's secound in tblEvents always is 00, and I check the datetime variable to insert and have secound different that 00.
the table definition is Data Type: datetime and Length: 8, how must be?
Hi,I'm new to SQL Server (Express) and I wonder if there is a way that I can format a date's appearance in the database, that is, the format of the datetime column. When I view a date in VWD Express, it's in my country's format (2006-11-24 for example) but when I try to insert a date using the same format using a web form, the inserted date in the database becomes 1905-06-something. This happens regardless of whether I'm inserting a string or if the string has been converted to a date via CDate. So, is there a way I can set the database's date format? And why is it wrong anyway? It's bugging me as the original (Swedish) date is already in the ISO format that SQL Server seems to use (such as yyyy-mm-dd), and I'm using localhost with Windows set to Swedish, IE 6 set to Swedish, and even web.config's UICulture and Culture to Swedish as well. Of course, I can rearrange the order of the date's numbers to get proper values in the db, but it seems as an unnecessary step and I can't figure out what format to use anyway. All help is very welcome. Pettrer
I'm in a learning phase of SQL server 7. I need your help for the following:
I am selecting from a dropdown list Month ('January, february,..... but not as '01', '02'..) and Year (2000, 2001.....), when they are selected a table is displayed for next 12 months starting from the selected month (like say, if April and 2002 was selected, my other table will show Apr. 02 - Mar. 03 ), and data is inserted into it manually. My question is How to insert this date into the sql database...as I just need the month and the year.....and in sql server the date datatype is "datetime", also i have only one column for this month and year....should i change my tables and make different columns for Month and Year. Can only Month (Januray, february.....) and Year (2000, 2001...) be inserted.
Dear Folks, how can i know the datetime format of my current session? and is it possible to change that to required format permanently for that particular database?
How to return time & number format that has set in the regional setting using stored procedure. Following is my sp for getting current date format from Sql Server.
In SQL query I have to find records which occour between two dates. I created Select query with two parameters @date1 and @date2 in clasue WHERE. But problem is with date format of my parameters. This format is to long. I dont wont to use time part of these parameters only date part is needed. When I put two identical dates my query doesn't find any data because both dates are eg. 2007-05-22 00:00:00. But I need data for all this day. How to correct this problem? Regards Pawel.
Hi, I have a SQL Express 2005 db, with the following format for the datetime vales: dd/mm/yyyy, and if the day or the month has only one digit, it'll be completed with a zero(ie 09/03/2007). The problem is that I sent a backup(.bak file) of it to other people, but they see the date as mm/dd/yyyy and the dates are not completed with zeroes(ie 5/5/2007). How can we both have the same format? Any ideas? Thanks a lot.
I'm still having a problem inserting date fields into sql server.
I don't understand how it accepts datetime.
I have all of my date columns defined with datetime format and all of the dates are coming out as the default of: 01/01/1900.
I tried to insert the data as string and sql server doesn't understand that format. Here's some of the code:
We're going from flat VSAM files to an sql server database. This is one huge sql insert statement with about 75 fields being loaded into a table so I'll only post one the date fields. Here's where I call the String functions from:
First, I have to uncomp the field from binary to String:
(lsDet1 is a concatenated String of the SQL Values to be inserted)
And Here are the two functions: The date field is coming in like: 1991112 where if the first character is a 1, the year is 1900 and if the first character is a 0, the year is 2000. I get correct fields in my message box like 1996/12/31 but then I don't know what sql server does to it in datetime format. When I check the database table it looks like: 01/12/1900
Maybe there is something wrong with my Convert_Date function;
Public Function CompToStr(aCompdata() As Byte) As String 'This is one way in which you can unpack a comp field. As I mentioned, 'you might be better off designing a flexible class to do the 'conversions. At minimum, this function should be expanded to 'accept a data picture as a param (decimal placement and so on).
Dim lsRtnStr As String Dim lsHoldStr As String Dim llCount As Long
For llCount = 1 To (UBound(aCompdata) + 1) Step 1 'loop thru the passed array. lsHoldStr = Hex(aCompdata(llCount - 1)) 'Convert the byte to a Hex string. If Len(Trim$(lsHoldStr)) = 1 Then 'if the highorder nibble was 0 lsHoldStr = "0" & Trim$(lsHoldStr) 'pad it with a leading zero. End If lsRtnStr = lsRtnStr & lsHoldStr 'Concat it to the return string. lsHoldStr = "" 'clear the var for the next pass. Next lsRtnStr = Replace$(lsRtnStr, "C", " ") 'Positive sign replacement. lsRtnStr = Replace$(lsRtnStr, "D", "-") 'Negative sign replacement. lsRtnStr = Replace$(lsRtnStr, "F", " ") 'Unsigned - implicit positive. lsRtnStr = Trim$(lsRtnStr)
llCount = 0 llCount = InStr(1, lsRtnStr, "-")
If llCount > 0 Then lsRtnStr = Right$(lsRtnStr, 1) & Left$(lsRtnStr, (Len(lsRtnStr) - 1)) End If CompToStr = lsRtnStr 'Return the hex string. End Function __________________________________________________ ___________________
Public Function Convert_Date(ByRef ls_sdate As String) As String
'incoming date Dim ls_scent , ls_smonth, ls_sday, ls_syear As String
I have a table with datetime field in SQL server 7.0 I have inserted values into datetime field for eg: '10/10/99' '10/10/99 10:30 AM' '11/10/99 11:50 PM' When I view this table from enterprise manager, values are shown exactly in the same format I have entered. But, When I run the query from Query Analyzer, It always shows values in the following format '1999-10-10 00:00:00.000'
Is there a way that I can see the values in the same format I have entered.
My table has a column that is DATETIME data type. The original format likes "1/21/2004". I want to check data lengh. However when I read the data by SELECT, SQL Server change the format to "Jan.-21-2004" automatically. Does any one has an idea to keep original datetime format? Thanks.
Is there any standard function for inserting datetime values to an sql table. I'm having a problem because some operating systems are in english and some operating systemes are in spanish.. When I insert a value '2005-02-15 12:00:00' it works on the english operating system, but it doesn't in the spanish one... any ideas?
On displaying data in the gridview with sqldatasource in asp.net C# 2005 on the datetime datatype field i want to display only the date but it displays the time also on each and every row.
On the money datatype field i want to display the roundoff amount or with decimal upto 2places like 12,000.00 which is shown as 12,000.0000... I have seen the same question in previous topic also but don't got it so asking in my post...
Pls tell me some format to avoid this invalid data.
I need to insert a user_date_time_created field in the formatuser_name + date_time_created where the date_time_created isn't one ofthe standard formats but is yyyymmddhhnnss. I can get most of the waythere using CONVERT, but I can't stop e.g. 080705 hrs (8 hrs, 7minutes and 5 seconds) on March 6, 2008 being returned as20080306875 instead of20080306080705.How can I get those zeroes back in there?--Regards.Richard.
I am trying to return all records between 2 dates. The Date columns are in DateTime format, and i am ignoring the timestamp. The user should be able to input UK Date Format (dd/mm/yyyy) and return the rows. This sql code works fine for American date format, but i get an error: converting from varchar to datetime when i put in a UK format. eg. 22/11/06. Please advise on this problem! many thanks!
ALTER PROCEDURE SalaryBetweenDates (
@WeekStart datetime,
@WeekEnd datetime ) AS
BEGIN SET @WeekStart = (SELECT REPLACE(CONVERT(DATETIME,@WeekStart ,103),' ','-')) SET @WeekEnd = (SELECT REPLACE(CONVERT(DATETIME,@WeekEnd ,103),' ','-')) END
BEGIN SELECT s.StaffNo,s.StaffName,s.StaffAddress, s.HourlyRate, sh.HoursWorked, CONVERT(varchar(12), sh.WeekStart, 103) AS StartDate, CONVERT(varchar(12), sh.WeekEnd, 103)As EndDate,(sh.HoursWorked * s.HourlyRate)"Salary" From Staff As S INNER JOIN StaffHours As Sh On S.StaffNo = Sh.StaffNo WHERE sh.WeekStart >= (@WeekStart) AND sh.WeekEnd <= (@WeekEnd)
FOR XML RAW ('paySlip'), root('Staff'), ELEMENTS XSINIL END
sorry folks the other message was on the wrong board!
Hello friends,
I am trying to return all records between 2 dates. The Date columns are in DateTime format, and i am ignoring the timestamp. The user should be able to input UK Date Format (dd/mm/yyyy) and return the rows. This sql code works fine for American date format, but i get an error: converting from varchar to datetime when i put in a UK format. eg. 22/11/06. Please advise on this problem! many thanks!
ALTER PROCEDURE SalaryBetweenDates (
@WeekStart datetime,
@WeekEnd datetime ) AS
BEGIN SET @WeekStart = (SELECT REPLACE(CONVERT(DATETIME,@WeekStart ,103),' ','-')) SET @WeekEnd = (SELECT REPLACE(CONVERT(DATETIME,@WeekEnd ,103),' ','-')) END
BEGIN SELECT s.StaffNo,s.StaffName,s.StaffAddress, s.HourlyRate, sh.HoursWorked, CONVERT(varchar(12), sh.WeekStart, 103) AS StartDate, CONVERT(varchar(12), sh.WeekEnd, 103)As EndDate,(sh.HoursWorked * s.HourlyRate)"Salary" From Staff As S INNER JOIN StaffHours As Sh On S.StaffNo = Sh.StaffNo WHERE sh.WeekStart >= (@WeekStart) AND sh.WeekEnd <= (@WeekEnd)
FOR XML RAW ('paySlip'), root('Staff'), ELEMENTS XSINIL END