error in getting date from MS Access database? - c#

Am using DevExpresss Winform. I used DateEdit to store date and in access database I used datatype as Date/Time. Now I stored Date [19-11-2013] and then while retrieve the date is come with time. like this [19-11-2013 PM 12:00:00]. But I dont need time. How to solve this error ?

That's not an error. Even if in your database you have a Date data type you get a time when you use a DateTime variable in C#. What you see is the default time 12:00 PM or 00:00 in 24h format. Note that is not Date data type in C#.
If you don't want to see the time value, just format it accordingly
Standard Date and Time Format Strings
DateTime date1 = new DateTime(2008,4, 10);
Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008

Related

Visual Studio Website how to get date data type without time in table

I created a simple website that shows some tables. I created a database from App_Data folder and created some tables. A table has a column of AddDate and its datatype is date.
I want to get only date without time. Currently my website shows the date like this:
1/30/2017 12:00:00 AM
I want to get the date such as Jan, 30 2017.
Here's what I did:
I created a database named TestDB adding from App_Data.
From the database, I added a table and added a column called AddDate.
Its datatype is date.
I selected data from the datatype drop-down of the AddDate column, but I get data with time as shown above.
How do I set date datatype without time in table in Visual Studio?
Update: 6/11
I could get only date by adding {0:d} in the property of the grid view.
For reference:
BoundField.DataFormatString Property
I think this is what you want:
var customDateFormat = yourDate.ToString("MMM, dd yyyy");
You can look into DateTime.ToString method in order to see how you can convert a datetime in the format you are expecting.
There is a slight disconnect between the database layer and the C# code layer logic that we all have to deal with from time to time, in C# DateTime is used for values that are DateOnly and those that carry a time as well.
When storing these values in SQL we can choose to use a Date data type and the time information will simply be omitted.
In your code you can use the .Date property to ignore the time component and return a date value that has a zero (midnight) time value.
So we accept that the runtime data type to use is DateTime now the only concern is how to render the value in the format that you have requested.
The DateTime datatype has a .ToString(string format) method that can be used at the point that you need to visualise the value.
var formattedDate = dateValue.ToString("MMM, dd yyyy");
If you are using Entity Framework or nHibernate ORM Frameworks then they have in built conventions for specifying that the data column data type should be a Date instead of a DateTime, but within your C# code you should use the DateTime data type to hold the date value.
You should use your DateTime like this:
DateTime time = DateTime.Now; // you datetime value
DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
and add using System.Globalization; in the top of of your class
you can also see this link:
How to get full date with full month name like 02 November 2015

MySQL Datetime showing incorrect time. ASP.NET C#

I added to my MySQL table a column called "registerdate", the datatype of this column is Datetime (I tried also TIMESTAMP) and in DEFAULT I have CURRENT_TIMESTAMP.
The datetime comes automatically after registration, its showing the correct day month and year but its showing incorrect hour (-10 hours).
I hope someone knows how to fix it, thanks for helping.
From the MySQL documentation on TimeStamp (emphasis mine):
MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.) By default, the current time zone for each connection is the server's time.
https://dev.mysql.com/doc/refman/5.5/en/datetime.html
Before you save the data into database, try to save with Culture Info like below
DateTime dt = DateTime.Now;
// CultureInfo for German in Germany.
CultureInfo ci = new CultureInfo("de-DE");
Console.WriteLine(dt.ToString("d", ci));

What's the correct SQL query to retrieve date field without time? C# MS Access

I have a Microsoft Access Database with a Date column listing dates in the format MM/DD/YYYY. I'm using the query :
SELECT Date FROM Table
This returns the date in C# in the format MM/DD/YYYY HH:MM:SS.
What would be the correct query to retrieve just the date and not the time?
You can just change it in C# by doing
yourDateTimeVariable.ToShortDateString();
To format date in MS Access you can use FORMAT function. In your case it will look like this:
SELECT FORMAT(Date, 'Short Date') FROM Table
Edit: Note that above example returns date in short date format as it is set up in system settings. To be more specific you can also use custom format like FORMAT(Date, 'yyyy/mm/dd').
I'm not quite sure what you mean here with C#. But if you want the query to return it in that format, you could do something like
SELECT CONVERT(VARCHAR(10), t.Date, 101) FROM Table t
read https://msdn.microsoft.com/en-us/library/ms187928.aspx about convert and it's formats.
If you want to have c# do it, you can use the DateTime.Format() see https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
In C# (since this question is tagged C#)
You have Date property of DateTime which returns Date.
var newdate = dateobject.Date;
or you can create new Date by passing date, month, year values to DateTime constructor.
var newdate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
Please note, in both cases what you get is DateTime object with time set to 12:00 AM. in C# there is nothing like Date only, it is always associated with time.

error while updating date datatype via C# and SQL

(Sorry for the bad english )
Hey , i got problem when im trying to update a Date datatype .
that's my SQL query
UPDATE Employees
SET BirthDateEmp = '04/11/2012'
WHERE (IdEmp = 1)
So i set day = 4 ,month = 11 and year 2012
but when i check my table it switch between the day and the month so now the day 11 and the is month 4.
and i if try to set this date '13/10/2012' (day - 13 month - 10 year -2012)
i got error because its trying to put : day-10 month-13 , and there's not month 13 so i get error
why its happening ?
It looks like your SQL server is expecting US format dates (mm/dd/yyyy). You need to let us know what database and os you are using.
The problem is that the date format you're using is ambiguous and the culture on the server is not the one you're expecting.
Ideally you want to work with typed parameters and never deal with dates as strings.
If you do have to use a string I've found the following format to be most consistently successful: yyyy-MM-dd
The localisation settings on your application and database are incompatible with each other.
You appear to have (and want) UK date formats (DD/MM/YYYY) in your application, but US date formats (MM/DD/YYYY) in your database.
You could change your database to store dates in a neutral format and then update your application to take local dates and convert them to this neutral format before storing in the database and from it when displaying them.
You should also be storing dates in Date (or DateTime) columns, not as strings.
You can change the format of Date datatype by code and check the query
UPDATE Employees
SET BirthDateEmp = '11/04/2012'
WHERE (IdEmp = 1)
that will update your table because the default format for date datatype is (MM/dd/yyyy) in SQL so follow this.

DatetimePicker automatic conversion C#

I am using C# and I am setting the value of the date time picker to my date from my database. But the format I have in database is different from the format of the Date Time Picker. Is there a way to automatically change the format of my database date to that of the date time picker. I have searched for it but I haven't found it.
I will appreciate your help.
But the format I have in database is different from the format of the Date Time Picke
You are making the mistake of thinking the database has any associated display format when storing a DATETIME - it doesn't - there is an internal representation. All you see is how the date is represented when you view it in some tool.
If your database uses a DATETIME column, as it should, then there is not issue.

Categories